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

时间:2021-10-04 21:33:40

本文转自:http://blog.csdn.net/kymegg/article/details/50964581

方法:使用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是类似这样的对象数据:

  1. var datalist= new Array();
  2. for ( var i = 1; i <= bookCount; i++) {
  3.   var object = new Object();
  4.   object.id = i;
  5.   object.name = "同学"+i;
  6. datalist.push(object);
  7. }

前台传输对象数组datalist:

  1. function saveData(datalist){
  2.   .ajax({
  3.     type:"POST",
  4.     url:base +"/save",
  5.     data:{"datalist":JSON.stringify(datalist)},
  6.     dataType: "json",
  7.     success:function (data){
  8.     },
  9.     error:function (){
  10.     alert("insert serv wrong  ");
  11.     }
  12.   );
  13. }

三、后台代码

后台获取到的list是string类型的,值为:

  1. [{"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好用,就试了下。在此给大家提供个参考。

    1. public Object save(@Param("datalist")String list){
    2.   JSONArray jsonArray = new JSONArray(list);
    3.   String id = jsonArray.getJSONObject(0).get("id");</span>//得到第一个同学的id
    4.   String name = jsonArray.getJSONObject(0).get("name");</span>//得到第一个同学的name
    5.       return true;
    6. }