當前位置:編程學習大全網 - 源碼下載 - java中如何將數據封裝為JSON包?

java中如何將數據封裝為JSON包?

java中將數據封裝為JSON包,可以使用java提供的jsonArray這個工具類進行轉換,代碼如下:

package?com.json;

import?java.io.IOException;

import?java.util.ArrayList;

import?java.util.Collection;

import?java.util.HashMap;

import?java.util.Iterator;

import?java.util.List;

import?java.util.Map;

import?javax.servlet.mons.beanutils.BeanUtils;

import?org.apache.struts2.ServletActionContext;

import?com.opensymphony.xwork2.ActionContext;

public?class?JSONUtils

{

/**

*?

*?@author?wangwei?JSON工具類

*?@param?<T>

*?

*/

/***

*?將List對象序列化為JSON文本

*/

public?static?<T>?String?toJSONString(List<T>?list)

{

JSONArray?jsonArray?=?JSONArray.fromObject(list);

return?jsonArray.toString();

}

/***

*?將對象序列化為JSON文本

*?@param?object

*?@return

*/

public?static?String?toJSONString(Object?object)

{

JSONArray?jsonArray?=?JSONArray.fromObject(object);

return?jsonArray.toString();

}

/***

*?將JSON對象數組序列化為JSON文本

*?@param?jsonArray

*?@return

*/

public?static?String?toJSONString(JSONArray?jsonArray)

{

return?jsonArray.toString();

}

/***

*?將JSON對象序列化為JSON文本

*?@param?jsonObject

*?@return

*/

public?static?String?toJSONString(JSONObject?jsonObject)

{

return?jsonObject.toString();

}?

/***

*?將對象轉換為List對象

*?@param?object

*?@return

*/

public?static?List?toArrayList(Object?object)

{

List?arrayList?=?new?ArrayList();

JSONArray?jsonArray?=?JSONArray.fromObject(object);

Iterator?it?=?jsonArray.iterator();

while?(it.hasNext())

{

JSONObject?jsonObject?=?(JSONObject)?it.next();

Iterator?keys?=?jsonObject.keys();

while?(keys.hasNext())

{

Object?key?=?keys.next();

Object?value?=?jsonObject.get(key);

arrayList.add(value);

}

}

return?arrayList;

}

/***

*?將對象轉換為Collection對象

*?@param?object

*?@return

*/

public?static?Collection?toCollection(Object?object)

{

JSONArray?jsonArray?=?JSONArray.fromObject(object);

return?JSONArray.toCollection(jsonArray);

}

/***

*?將對象轉換為JSON對象數組

*?@param?object

*?@return

*/

public?static?JSONArray?toJSONArray(Object?object)

{

return?JSONArray.fromObject(object);

}

/***

*?將對象轉換為JSON對象

*?@param?object

*?@return

*/

public?static?JSONObject?toJSONObject(Object?object)

{

return?JSONObject.fromObject(object);

}

/***

*?將對象轉換為HashMap

*?@param?object

*?@return

*/

public?static?HashMap?toHashMap(Object?object)

{

HashMap<String,?Object>?data?=?new?HashMap<String,?Object>();

JSONObject?jsonObject?=?JSONUtils.toJSONObject(object);

Iterator?it?=?jsonObject.keys();

while?(it.hasNext())

{

String?key?=?String.valueOf(it.next());

Object?value?=?jsonObject.get(key);

data.put(key,?value);

}

return?data;

}

/***

*?將對象轉換為List<Map<String,Object>>

*?@param?object

*?@return

*/

//?返回非實體類型(Map<String,Object>)的List

public?static?List<Map<String,?Object>>?toList(Object?object)

{

List<Map<String,?Object>>?list?=?new?ArrayList<Map<String,?Object>>();

JSONArray?jsonArray?=?JSONArray.fromObject(object);

for?(Object?obj?:?jsonArray)

{

JSONObject?jsonObject?=?(JSONObject)?obj;

Map<String,?Object>?map?=?new?HashMap<String,?Object>();

Iterator?it?=?jsonObject.keys();

while?(it.hasNext())

{

String?key?=?(String)?it.next();

Object?value?=?jsonObject.get(key);

map.put((String)?key,?value);

}

list.add(map);

}

return?list;

}

/***

*?將JSON對象數組轉換為傳入類型的List

*?@param?<T>

*?@param?jsonArray

*?@param?objectClass

*?@return

*/

public?static?<T>?List<T>?toList(JSONArray?jsonArray,?Class<T>?objectClass)

{

return?JSONArray.toList(jsonArray,?objectClass);

}

/***

*?將對象轉換為傳入類型的List

*?@param?<T>

*?@param?jsonArray

*?@param?objectClass

*?@return

*/

public?static?<T>?List<T>?toList(Object?object,?Class<T>?objectClass)

{

JSONArray?jsonArray?=?JSONArray.fromObject(object);

return?JSONArray.toList(jsonArray,?objectClass);

}

/***

*?將JSON對象轉換為傳入類型的對象

*?@param?<T>

*?@param?jsonObject

*?@param?beanClass

*?@return

*/

public?static?<T>?T?toBean(JSONObject?jsonObject,?Class<T>?beanClass)

{

return?(T)?JSONObject.toBean(jsonObject,?beanClass);

}

/***

*?將將對象轉換為傳入類型的對象

*?@param?<T>

*?@param?object

*?@param?beanClass

*?@return

*/

public?static?<T>?T?toBean(Object?object,?Class<T>?beanClass)

{

JSONObject?jsonObject?=?JSONObject.fromObject(object);

return?(T)?JSONObject.toBean(jsonObject,?beanClass);

}

/***

*?將JSON文本反序列化為主從關系的實體

*?@param?<T>?泛型T?代表主實體類型

*?@param?<D>?泛型D?代表從實體類型

*?@param?jsonString?JSON文本

*?@param?mainClass?主實體類型

*?@param?detailName?從實體類在主實體類中的屬性名稱

*?@param?detailClass?從實體類型

*?@return

*/

public?static?<T,?D>?T?toBean(String?jsonString,?Class<T>?mainClass,

String?detailName,?Class<D>?detailClass)

{

JSONObject?jsonObject?=?JSONObject.fromObject(jsonString);

JSONArray?jsonArray?=?(JSONArray)?jsonObject.get(detailName);

T?mainEntity?=?JSONUtils.toBean(jsonObject,?mainClass);

List<D>?detailList?=?JSONUtils.toList(jsonArray,?detailClass);

try

{

BeanUtils.setProperty(mainEntity,?detailName,?detailList);

}

catch?(Exception?ex)

{

throw?new?RuntimeException("主從關系JSON反序列化實體失敗!");

}

return?mainEntity;

}

/***

*?將JSON文本反序列化為主從關系的實體

*?@param?<T>泛型T?代表主實體類型

*?@param?<D1>泛型D1?代表從實體類型

*?@param?<D2>泛型D2?代表從實體類型

*?@param?jsonString?JSON文本

*?@param?mainClass?主實體類型

*?@param?detailName1?從實體類在主實體類中的屬性

*?@param?detailClass1?從實體類型

*?@param?detailName2?從實體類在主實體類中的屬性

*?@param?detailClass2?從實體類型

*?@return

*/

public?static?<T,?D1,?D2>?T?toBean(String?jsonString,?Class<T>?mainClass,

String?detailName1,?Class<D1>?detailClass1,?String?detailName2,

Class<D2>?detailClass2)

{

JSONObject?jsonObject?=?JSONObject.fromObject(jsonString);

JSONArray?jsonArray1?=?(JSONArray)?jsonObject.get(detailName1);

JSONArray?jsonArray2?=?(JSONArray)?jsonObject.get(detailName2);

T?mainEntity?=?JSONUtils.toBean(jsonObject,?mainClass);

List<D1>?detailList1?=?JSONUtils.toList(jsonArray1,?detailClass1);

List<D2>?detailList2?=?JSONUtils.toList(jsonArray2,?detailClass2);

try

{

BeanUtils.setProperty(mainEntity,?detailName1,?detailList1);

BeanUtils.setProperty(mainEntity,?detailName2,?detailList2);

}

catch?(Exception?ex)

{

throw?new?RuntimeException("主從關系JSON反序列化實體失敗!");

}

return?mainEntity;

}

/***

*?將JSON文本反序列化為主從關系的實體

*?@param?<T>泛型T?代表主實體類型

*?@param?<D1>泛型D1?代表從實體類型

*?@param?<D2>泛型D2?代表從實體類型

*?@param?jsonString?JSON文本

*?@param?mainClass?主實體類型

*?@param?detailName1?從實體類在主實體類中的屬性

*?@param?detailClass1?從實體類型

*?@param?detailName2?從實體類在主實體類中的屬性

*?@param?detailClass2?從實體類型

*?@param?detailName3?從實體類在主實體類中的屬性

*?@param?detailClass3?從實體類型

*?@return

*/

public?static?<T,?D1,?D2,?D3>?T?toBean(String?jsonString,

Class<T>?mainClass,?String?detailName1,?Class<D1>?detailClass1,

String?detailName2,?Class<D2>?detailClass2,?String?detailName3,

Class<D3>?detailClass3)

{

JSONObject?jsonObject?=?JSONObject.fromObject(jsonString);

JSONArray?jsonArray1?=?(JSONArray)?jsonObject.get(detailName1);

JSONArray?jsonArray2?=?(JSONArray)?jsonObject.get(detailName2);

JSONArray?jsonArray3?=?(JSONArray)?jsonObject.get(detailName3);

T?mainEntity?=?JSONUtils.toBean(jsonObject,?mainClass);

List<D1>?detailList1?=?JSONUtils.toList(jsonArray1,?detailClass1);

List<D2>?detailList2?=?JSONUtils.toList(jsonArray2,?detailClass2);

List<D3>?detailList3?=?JSONUtils.toList(jsonArray3,?detailClass3);

try

{

BeanUtils.setProperty(mainEntity,?detailName1,?detailList1);

BeanUtils.setProperty(mainEntity,?detailName2,?detailList2);

BeanUtils.setProperty(mainEntity,?detailName3,?detailList3);

}

catch?(Exception?ex)

{

throw?new?RuntimeException("主從關系JSON反序列化實體失敗!");

}

return?mainEntity;

}

/***

*?將JSON文本反序列化為主從關系的實體

*?@param?<T>?主實體類型

*?@param?jsonString?JSON文本

*?@param?mainClass?主實體類型

*?@param?detailClass?存放了多個從實體在主實體中屬性名稱和類型

*?@return

*/

public?static?<T>?T?toBean(String?jsonString,?Class<T>?mainClass,

HashMap<String,?Class>?detailClass)

{

JSONObject?jsonObject?=?JSONObject.fromObject(jsonString);

T?mainEntity?=?JSONUtils.toBean(jsonObject,?mainClass);

for?(Object?key?:?detailClass.keySet())

{

try

{

Class?value?=?(Class)?detailClass.get(key);

BeanUtils.setProperty(mainEntity,?key.toString(),?value);

}

catch?(Exception?ex)

{

throw?new?RuntimeException("主從關系JSON反序列化實體失敗!");

}

}

return?mainEntity;

}

/**

*?封裝json數據從後臺傳輸

*?@param?obj

*/

public?static?void?outPutJson(Object?obj){

ActionContext?context?=?ActionContext.getContext();

HttpServletResponse?response?=?(HttpServletResponse)?context.get(ServletActionContext.HTTP_RESPONSE);

try?{

response.getWriter().print(obj);

}?catch?(IOException?e)?{

e.printStackTrace();

}

}

}

//測試類

String?s1?=?"[{id:1,?pId:0,?name:\"test1\"?,?open:true}]";?

String?s2?=?"{id:2,?pId:1,?name:\"test211\"?,?open:true}";?

String?s3?=?"{id:3,?pId:2,?name:\"test311\"?,?open:true}";?

String?s4?=?"{id:4,?pId:1,?name:\"test411\"?,?open:true}";

List<String>?listZtree?=?new?ArrayList<String>();

listZtree.add(s1);

listZtree.add(s2);

listZtree.add(s3);

listZtree.add(s4);

System.out.println(JSONUtils.toJSONString(listZtree));

}

  • 上一篇:信長之野望13:天道——技術壹覽
  • 下一篇:100歲老人生日祝福語_給百歲老人的生日祝福語
  • copyright 2024編程學習大全網