json對象與java對象的互轉

務必引入jar包:json-lib-2.2.2-jdk15.jar。

代碼如下:

import net.sf.json.JSONObject;
import net.sf.json.JSONArray;

//java2json
String data = JSONObject.fromObject(Object obj).toString();
System.out.println(data);

//json2java
String result ="{\"datas\":[{'id':'1','deployment':'deployment','startDate':'20131201','category':'category','name':'ADSL','desc':'ADSL'}," +
				"{'id':'2','deployment':'deployment','startDate':'20131202','category':'category','name':'AAA','desc':'AAA'}" +
				"],\"resultDesc\":\"查詢成功!\",\"resultSuccess\":true}";
JSONObject jsonObject = JSONObject.fromObject(result);
JSONArray arrays =jsonObject.getJSONArray("datas");
for(int i=0;i<arrays.size();i++){
	JSONObject object = arrays.getJSONObject(i);
	object.put("status", ((String)object.get("id")).equals("1")?"1":"2");//增加屬性值
        object.put("id", (String)object.get("name"));//修改屬性值
        object.put("startDate", ((String)object.get("startDate")).substring(0,10));//修改屬性值
}
System.out.println(jsonObject.toString());

如果要弄分頁呢,java代碼如下。

JSONObject jsonObject = JSONObject.fromObject(result);  
JSONArray arrays =jsonObject.getJSONArray("datas");  
Collection data = arrays.toCollection(arrays);
List dataList = (ArrayList)data;
List dataListSub = dataList.subList(0, 10);//內存分頁
System.out.println("{'datas':"+JSONArray.fromObject(dataListSub).toString());
System.out.println(dataList.size()+" "+dataListSub.size());

/*****************華麗分割線下是總結*********************/

(1)java2json方面,支持複雜的對象(子屬性有list、array等等),經測試,最後都能順利轉爲json對象。

(2)json2java方面,本例子把json的datas節點的list轉爲JSONArray對象了,即該JSONArray對象對應爲一個list,for循環遍歷list的元素,並取出元素的id屬性值、根據id值追加了屬性status(JSONObject的put方法)。在轉換過程中沒有用到自定義的class,感覺很乾淨呢,這樣稍稍處理完就可以直接返回json字符串到ext前端了。

(3)對json進行分頁時,注意上面代碼的第六行,用JSONArray的方法,用JSONObject.fromObject,會出錯:'object' is an array. Use JSONArray instead。。。

更多json轉換方法,可以參考改jar包的API文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章