
已解决问题
谷歌absusan用户在2016.04.19提交了关于“妖猫传jquery ajax 向后台传递数组参数示例”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-25T14:00:46。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,你是我的宝贝,你是我的花,谢谢你对我的帮助!
详细问题描述及疑问:期待您的答案,你是我的宝贝,你是我的花,谢谢你对我的帮助!
需求:
在JS中向后台传递数组参数
分析:
JS中的数组是弱类型的
在
但是可以使用JSON字
也许,你要说如果是复合对象
复制代码代
publicclassPerson{
privateStringusername;
priva
privateAddressaddr;
}
Person对象里有个Address类型的a
实现:
OK,原理就是这么个。先看JS如何写:
复制代码代码如
varas=[];
var
for(varint=0;int<5;i
temp.pus
t
temp.push(',"v":');
temp.push(int);
temp
as.push(temp.jo
}
//Jque
$.post
"servlet/AjaxServlet?m=put
);
最终拼成的串就是如下样式,(只
复制代码代码如下:
{"k":0,"v"
后台接收,不讨论任何框架,只需要
复制代码代码如下:
String[
有一点需要
复制代码代码如下:
E**meration<String>names=request.getParameterNames();
while(names.hasMoreElements()){
Stringstring=(String)names.nextElement();
System.out.println(string);
}
OK,至此为止,已经接收完毕,剩下的就是如何将一个JSON字符串转成一个POJO了。我使用jsontools-core-1.7.jar,此jar包依赖antlr-2.7.7.jar,自行到代码库中下载,下载完毕,导入classpath,写一个简单的工具类,主要有这么2个方法:
复制代码代码如下:
/**
*将对象转换为JSON格式的字符串
*@paramobj
*@return返回JSON字符串
*/
publicstaticStringtoJSONAsString(Objectobj){
try{
returnJSONMapper.toJSON(obj).render(false);
}catch(MapperExceptione){
e.printStackTrace();
}
return**ll;
}
@SuppressWarnings("unchecked")
publicstatic<T>TjsonToObject(StringjsonStr,Class<T>targetClass)throwsTokenStreamException,RecognitionException,MapperException{
JSONValuejv=newJSONParser(newStringReader(jsonStr)).nextValue();
return(T)JSONMapper.toJ**a(jv,targetClass);
}
//test
publicstaticvoidmain(String[]args)throwsException{
Personp=newPerson();
p.setK("a");
p.setV("v");
Stringjson=toJSONAsString(p);
Personnp=jsonToObject(json,Person.class);
System.out.println(np.getK()+"=="+np.getV());
}
request取到值后,遍历数组,挨个转换
复制代码代码如下:
Personp=JSO**tils.jsonToObject(jsonArr[0],Person.class);
Person类如下:
复制代码代码如下:
publicclassPerson{
privateStringk;
privateStringv;
publicStringgetK(){
returnk;
}
publicvoidsetK(Stringk){
this.k=k;
}
publicStringgetV(){
returnv;
}
publicvoidsetV(Stringv){
this.v=v;
}
}