前台:
<script type="text/javascript">
$(document).ready(function(){
var chaozhu=new Object();
var idarray= new Array;
for(var i=0;i<6;i++){
chaozhu.idx=0;
chaozhu.vaul=i;
idarray.push(chaozhu);
chaozhu={};
}
$("#xiuga").click(function(){
var cht=$.toJSON(idarray);
alert(cht);
$.ajax({
type: "POST",
url: "shangc.action",
data: {cht:cht},
dataType: 'json',
async: false,
success: function(){}
});
});
});
</script>
后台接收到的值:
[{"idx":0,"vaul":0},{"idx":0,"vaul":1},{"idx":0,"vaul":2},{"idx":0,"vaul":3},{"idx":0,"vaul":4},{"idx":0,"vaul":5}]
请问我用java 怎么解释成map或数组呢???
JSONObject jsonObj = JSONObject.fromObject(cht); 出错
------解决方案--------------------
用JSONArray
http://blog.sina.com.cn/s/blog_5920510a01011vu8.html
------解决方案--------------------
说实话,我也没有发现什么关系来着
不过我觉得你可以把他们封装成为一个对象,然后这些对象放到List集合里面
,当然对应的转换方法,你可以百度一下,我猜大概是类似于convert吧!
------解决方案--------------------
用google gson
你这个出来后是个list
Gson gson = new Gson();
List<Map<String,String>> list= gson.fromJson(s,
new TypeToken<List<Map<String,String>>>() {
}.getType());
循环list
------解决方案--------------------
commons-lang3-3.1.jar如果这个包是3的话在java调用JSONObject...的时候就会报错。可能换成commons-lang2-..的包就好了,3里没有JSONObject的相关方法。看看是不是这个原因。
------解决方案--------------------
附上解析字符串的代码:
String str="[{'idx':0,'vaul':0},{'idx':0,'vaul':1},{'idx':0,'vaul':2},{'idx':0,'vaul':3},{'idx':0,'vaul':4},{'idx':0,'vaul':5}]";
JSONArray ja =JSONArray.fromObject(str);
ListIterator li=ja.listIterator();
while(li.hasNext()){
Map<String,Integer> jo=(Map<String, Integer>) li.next();
System.out.println("输出:idx="+jo.get("idx")+",vaul="+jo.get("vaul"));
}
------解决方案--------------------
String str="[{'idx':0,'vaul':0},{'idx':0,'vaul':1},{'idx':0,'vaul':2},{'idx':0,'vaul':3},{'idx':0,'vaul':4},{'idx':0,'vaul':5}]";
JSONArray ja=JSONArray.fromObject(str);
List<Map> list=JSONArray.toList(ja, Map.class);//把你的json传转成list里面是map类型
for(Map map:list){
System.out.println(map);
}