Json:前台對象數組傳到后台解析


本文轉自: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是類似這樣的對象數據:

[javascript] view plain copy
  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:

[javascript] view plain copy
  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.     },  
  10.     error:function (){  
  11.          alert("insert serv wrong  ");  
  12.     }  
  13.   );  
  14.  }  

三、后台代碼

       后台獲取到的list是string類型的,值為:

[java] view plain copy
  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好用,就試了下。在此給大家提供個參考。

[java] view plain copy
    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.     } 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM