一般都是这样用json,JSONObject传很多不同类的东西,JSONArray用来传一类数组;
在action中这样:
import net.sf.json.JSONObject;
public class test extends ActionSupport implements SessionAware{
private JSONObject jsonObject = new JSONObject();
private JSONArray jsonArray = new JSONArray();
//setter and getter
jsonObject.put("test",list);
jsonArray.addAll(需要交互的数组);
}
在jsp中这样
$.getJSON("/test.action",function(data){
$.each(data,function(i,item){
...操作;
//其中data,就是传回来的数据,如果是JSONObject,put进来的话取的方式和map取值一样,即$.each(data.test,item){...})
});
});
但是,在一个复杂业务时用到了JSONObject动态put,
for(int i = 0;i < 10 ;i ++ ){
//在这取了个list
jsonObject.put("key"+i,list);
}
之后在jsp中其他取值没问题,就这些动态的取不出来,后来经过老大提醒改为:
for(int i = 0;i < 10 ;i ++){
$.each(data[key+i],item){...})
}
这个问题应该是JSONObject底层封装了map的原因