本文轉自: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是類似這樣的對象數據:
- 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:
- 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類型的,值為:
- [{"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好用,就試了下。在此給大家提供個參考。
- public Object save(@Param("datalist")String list){
- JSONArray jsonArray = new JSONArray(list);
- String id = jsonArray.getJSONObject(0).get("id");</span>//得到第一個同學的id
- String name = jsonArray.getJSONObject(0).get("name");</span>//得到第一個同學的name
- return true;
- }