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文档。

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