Json:前台对象数组传到后台解析

方法:使用JsonArray进行解析
步骤:
一、引入一系列JAR包
      要使程序便于解析json,首先引入json-lib包,son-lib包同时依赖于5个JAR包:(前5个为依赖包);
      由于刚开始笔者是随便下载这些包(没有管版本)导入程序,但没想到程序出现了兼容问题,为了使大家不再浪费时间,现给出经测试可用的一套包名及版本号;
      1.commons-beanutils-1.8.3.jar
      2.commons-collections-3.2.1.jar
      3.commons-lang-2.6.jar
      4.commons-logging-1.1.1.jar
      5.ezmorph-1.0.6.jar
      6.json-lib-2.4-jdk15.jar
二、前台代码
      datalist是类似这样的对象数据:
[javascript] view plain copy
  var datalist= new Array();  
  for ( var i = 1; i <= bookCount; i++) {  
var object = new Object();  
object.id = i;  
object.name = "同学"+i;  
       datalist.push(object);         
  }  
      前台传输对象数组datalist:
[javascript] view plain copy
 function saveData(datalist){  
.ajax({  
type:"POST",  
url:base +"/save",  
data:{"datalist":JSON.stringify(datalist)},  
dataType: "json",  
success:function (data){  
     
},  
error:function (){  
     alert("insert serv wrong");  
}  
);  
 }  
三、后台代码
       后台获取到的list是string类型的,值为:
[java] view plain copy
[{"id":1,"name":"同学1"},{"id":2,"name":"同学2"}]  
       后台转换得到对象对应值:
       注意:这样使用的话,引入JSONArray的类型为org.json而不是net.sf.json,笔者开始引入的是net.sf.json.JSONArray,但JSONObject.fromObject(obj)时报错报java.lang.reflect.InvocationTargetException错误。解决很久未果,偶然看一网友说用org.json比net.sf.json好用,就试了下。在此给大家提供个参考。
[java] view plain copy
    public Object save(@Param("datalist")String list){        
    JSONArray jsonArray = new JSONArray(list);  
    String id = jsonArray.getJSONObject(0).get("id");//得到第一个同学的id  
        String name = jsonArray.getJSONObject(0).get("name");//得到第一个同学的name  
       return true;   
    }  

你可能感兴趣的:(JSP,jQuery,JS)