包裹?com.json
進口?Java . io . io exception;
進口?Java . util . ArrayList;
進口?java.util .集合;
進口?Java . util . hashmap;
進口?Java . util . iterator;
進口?Java . util . list;
進口?Java . util . map;
進口?javax . servlet . mons . bean utils . bean utils;
進口?org . Apache . struts 2 . servletactioncontext;
進口?com . open symphony . xwork 2 . action context;
公共?班級?JSONUtils
{
/**
*?
*?@作者?王維?JSON工具類
*?@param?& ltT & gt
*?
*/
/***
*?將列表對象序列化為JSON文本。
*/
公共?靜電?& ltT & gt?字符串?toJSONString(List & lt;T & gt?列表)
{
JSONArray?jsonArray?=?JSON array . from object(list);
回歸?JSON array . tostring();
}
/***
*?將對象序列化為JSON文本
*?@param?目標
*?@返回
*/
公共?靜電?字符串?toJSONString(對象?對象)
{
JSONArray?jsonArray?=?JSON array . from object(object);
回歸?JSON array . tostring();
}
/***
*?將JSON對象的數組序列化為JSON文本。
*?@param?jsonArray
*?@返回
*/
公共?靜電?字符串?toJSONString(JSONArray?jsonArray)
{
回歸?JSON array . tostring();
}
/***
*?將JSON對象序列化為JSON文本。
*?@param?jsonObject
*?@返回
*/
公共?靜電?字符串?toJSONString(JSONObject?jsonObject)
{
回歸?JSON object . tostring();
}?
/***
*?將對象轉換為列表對象。
*?@param?目標
*?@返回
*/
公共?靜電?列表?toArrayList(對象?對象)
{
列表?數組列表?=?新的?ArrayList();
JSONArray?jsonArray?=?JSON array . from object(object);
叠代器?它?=?JSON array . iterator();
什麽時候?(it.hasNext())
{
JSONObject?jsonObject?=?(JSONObject)?it . next();
叠代器?鑰匙?=?JSON object . keys();
什麽時候?(keys.hasNext())
{
對象?鑰匙?=?keys . next();
對象?價值?=?JSON object . get(key);
arrayList.add(值);
}
}
回歸?arrayList
}
/***
*?將對象轉換為集合對象。
*?@param?目標
*?@返回
*/
公共?靜電?收藏?toCollection(對象?對象)
{
JSONArray?jsonArray?=?JSON array . from object(object);
回歸?JSON array . to collection(JSON array);
}
/***
*?將對象轉換為JSON對象的數組。
*?@param?目標
*?@返回
*/
公共?靜電?JSONArray?toJSONArray(對象?對象)
{
回歸?JSON array . from object(object);
}
/***
*?將對象轉換為JSON對象
*?@param?目標
*?@返回
*/
公共?靜電?JSONObject?toJSONObject(對象?對象)
{
回歸?JSONObject.fromObject(對象);
}
/***
*?將對象轉換為哈希表
*?@param?目標
*?@返回
*/
公共?靜電?HashMap?toHashMap(對象?對象)
{
HashMap & lt字符串,?Object & gt?數據?=?新的?HashMap & lt字符串,?Object & gt();
JSONObject?jsonObject?=?JSONUtils.toJSONObject(對象);
叠代器?它?=?JSON object . keys();
什麽時候?(it.hasNext())
{
字符串?鑰匙?=?string . value of(it . next());
對象?價值?=?JSON object . get(key);
data.put(鍵,值);
}
回歸?數據;
}
/***
*?將對象轉換為列表
*?@param?目標
*?@返回
*/
//?返回非實體類型(映射
公共?靜電?列表& lt地圖& lt字符串,?Object & gt& gt?toList(對象?對象)
{
列表& lt地圖& lt弦,?Object & gt& gt?列表?=?新的?ArrayList & lt地圖& lt弦,?Object & gt& gt();
JSONArray?jsonArray?=?JSON array . from object(object);
為了什麽?(對象?obj?:?jsonArray)
{
JSONObject?jsonObject?=?(JSONObject)?obj
地圖& lt弦,?Object & gt?地圖?=?新的?HashMap & lt弦,?Object & gt();
叠代器?它?=?JSON object . keys();
什麽時候?(it.hasNext())
{
字符串?鑰匙?=?(字符串)?it . next();
對象?價值?=?JSON object . get(key);
map.put((字符串)?關鍵,?值);
}
list.add(地圖);
}
回歸?列表;
}
/***
*?將JSON對象的數組轉換為傳入類型的列表。
*?@param?& ltT & gt
*?@param?jsonArray
*?@param?對象類
*?@返回
*/
公共?靜電?& ltT & gt?列表& ltT & gt?toList(JSONArray?jsonArray,?Class & ltT & gt?對象類)
{
回歸?JSONArray.toList(jsonArray,?object class);
}
/***
*?將對象轉換為傳入類型的列表。
*?@param?& ltT & gt
*?@param?jsonArray
*?@param?對象類
*?@返回
*/
公共?靜電?& ltT & gt?列表& ltT & gt?toList(對象?對象,?Class & ltT & gt?對象類)
{
JSONArray?jsonArray?=?JSON array . from object(object);
回歸?JSONArray.toList(jsonArray,?object class);
}
/***
*?將JSON對象轉換為傳入類型的對象。
*?@param?& ltT & gt
*?@param?jsonObject
*?@param?豆類
*?@返回
*/
公共?靜電?& ltT & gt?t?toBean(JSONObject?jsonObject,?Class & ltT & gt?beanClass)
{
回歸?(T)?JSONObject.toBean(jsonObject,?bean class);
}
/***
*?該對象將被轉換為傳入類型的對象。
*?@param?& ltT & gt
*?@param?目標
*?@param?豆類
*?@返回
*/
公共?靜電?& ltT & gt?t?toBean(對象?對象,?Class & ltT & gt?beanClass)
{
JSONObject?jsonObject?=?JSONObject.fromObject(對象);
回歸?(T)?JSONObject.toBean(jsonObject,?bean class);
}
/***
*?將JSON文本反序列化為具有主從關系的實體。
*?@param?& ltT & gt?通用t?表示主要實體類型。
*?@param?& ltD & gt?通用d?表示從屬實體類型。
*?@param?jsonString?JSON文本
*?@param?主類?主要實體類型
*?@param?詳細名稱?主實體類中從屬實體類的屬性名。
*?@param?detailClass?來自實體類型
*?@返回
*/
公共?靜電?& ltt,?D & gt?t?toBean(字符串?jsonString,?Class & ltT & gt?主類,
字符串?detailName,Class & ltD & gt?detailClass)
{
JSONObject?jsonObject?=?JSON object . from object(JSON string);
JSONArray?jsonArray?=?(JSONArray)?JSON object . get(detail name);
t?主實體?=?JSONUtils.toBean(jsonObject,?main class);
列表& ltD & gt?詳細列表?=?JSONUtils.toList(jsonArray,?detail class);
嘗試
{
bean utils . set property(main entity,detailName,detail list);
}
接住?(例外?ex)
{
扔?新的?RuntimeException ("JSON反序列化實體在主從關系中失敗!");
}
回歸?主實體;
}
/***
*?將JSON文本反序列化為具有主從關系的實體。
*?@param?& ltT & gt通用t?表示主要實體類型。
*?@param?& ltd 1 & gt;通用D1?表示從屬實體類型。
*?@param?& ltD2 & gt;通用D2?表示從屬實體類型。
*?@param?jsonString?JSON文本
*?@param?主類?主要實體類型
*?@param?detailName1?主實體類中從屬實體類的屬性
*?@param?detailClass1?來自實體類型
*?@param?detailName2?主實體類中從屬實體類的屬性
*?@param?detailClass2?來自實體類型
*?@返回
*/
公共?靜電?& ltt,?D1,?D2 & gt;?t?toBean(字符串?jsonString,?Class & ltT & gt?主類,
字符串?detailName1,?Class & ltd 1 & gt;?detailClass1,?字符串?詳細名稱2,
Class & ltD2 & gt;?detailClass2)
{
JSONObject?jsonObject?=?JSON object . from object(JSON string);
JSONArray?jsonArray1?=?(JSONArray)?JSON object . get(detail name 1);
JSONArray?jsonArray2?=?(JSONArray)?JSON object . get(detail name 2);
t?主實體?=?JSONUtils.toBean(jsonObject,?main class);
列表& ltd 1 & gt;?detailList1?=?jsonutils . to list(JSON array 1,?detail class 1);
列表& ltD2 & gt;?詳細列表2?=?JSONUtils.toList(jsonArray2,?detail class 2);
嘗試
{
bean utils . set property(main entity,detailName1,?detaillist 1);
bean utils . set property(main entity,detailName2,?詳細列表2);
}
接住?(例外?ex)
{
扔?新的?RuntimeException ("JSON反序列化實體在主從關系中失敗!");
}
回歸?主實體;
}
/***
*?將JSON文本反序列化為具有主從關系的實體。
*?@param?& ltT & gt通用t?表示主要實體類型。
*?@param?& ltd 1 & gt;通用D1?表示從屬實體類型。
*?@param?& ltD2 & gt;通用D2?表示從屬實體類型。
*?@param?jsonString?JSON文本
*?@param?主類?主要實體類型
*?@param?detailName1?主實體類中從屬實體類的屬性
*?@param?detailClass1?來自實體類型
*?@param?detailName2?主實體類中從屬實體類的屬性
*?@param?detailClass2?來自實體類型
*?@param?detailName3?主實體類中從屬實體類的屬性
*?@param?detailClass3?來自實體類型
*?@返回
*/
公共?靜電?& ltt,?D1,?D2?D3 & gt?t?toBean(字符串?jsonString,
Class & ltT & gt?主類,?字符串?detailName1,?Class & ltd 1 & gt;?detailClass1,
字符串?detailName2,?Class & ltD2 & gt;?detailClass2,?字符串?詳細名稱3,
Class & ltD3 & gt?詳細信息類別3)
{
JSONObject?jsonObject?=?JSON object . from object(JSON string);
JSONArray?jsonArray1?=?(JSONArray)?JSON object . get(detail name 1);
JSONArray?jsonArray2?=?(JSONArray)?JSON object . get(detail name 2);
JSONArray?jsonArray3?=?(JSONArray)?JSON object . get(detail name 3);
t?主實體?=?JSONUtils.toBean(jsonObject,?main class);
列表& ltd 1 & gt;?detailList1?=?jsonutils . to list(JSON array 1,?detail class 1);
列表& ltD2 & gt;?詳細列表2?=?JSONUtils.toList(jsonArray2,?detail class 2);
列表& ltD3 & gt?詳細列表3?=?JSONUtils.toList(jsonArray3,?detail class 3);
嘗試
{
bean utils . set property(main entity,detailName1,?detaillist 1);
bean utils . set property(main entity,detailName2,?詳細列表2);
bean utils . set property(main entity,detailName3,?詳細列表3);
}
接住?(例外?ex)
{
扔?新的?RuntimeException ("JSON反序列化實體在主從關系中失敗!");
}
回歸?主實體;
}
/***
*?將JSON文本反序列化為具有主從關系的實體。
*?@param?& ltT & gt?主要實體類型
*?@param?jsonString?JSON文本
*?@param?主類?主要實體類型
*?@param?detailClass?在主實體中存儲多個從實體屬性名稱和類型。
*?@返回
*/
公共?靜電?& ltT & gt?t?toBean(字符串?jsonString,?Class & ltT & gt?主類,
HashMap & lt弦,?Class & gt?detailClass)
{
JSONObject?jsonObject?=?JSON object . from object(JSON string);
t?主實體?=?JSONUtils.toBean(jsonObject,?main class);
為了什麽?(對象?鑰匙?:?detailClass.keySet())
{
嘗試
{
班級?價值?=?(類)?detail class . get(key);
bean utils . set property(main entity,key.toString(),?值);
}
接住?(例外?ex)
{
扔?新的?RuntimeException ("JSON反序列化實體在主從關系中失敗!");
}
}
回歸?主實體;
}
/**
*?封裝的json數據從後臺傳輸。
*?@param?目標文件
*/
公共?靜電?作廢?outPutJson(對象?obj){
ActionContext?語境?=?action context . get context();
HttpServletResponse?回應?=?(HttpServletResponse)?context . get(ServletActionContext。HTTP _ RESPONSE);
試試?{
response.getWriter()。print(obj);
}?接住?(IOException?e)?{
e . printstacktrace();
}
}
}
//測試類
字符串?s1?=?"[{id:1,?pId:0,?名稱:\"test1\ "?,?open:true }]";?
字符串?s2?=?“{id:2,?pId:1,?名稱:\"test211\ "?,?open:true }”;?
字符串?s3?=?“{id:3,?pId:2,?名稱:\"test311\ "?,?open:true }”;?
字符串?s4?=?“{id:4,?pId:1,?名稱:\"test411\ "?,?open:true }”;
列表& lt字符串& gt?listZtree?=?新的?ArrayList & lt字符串& gt();
listztree . add(s 1);
listztree . add(S2);
listztree . add(S3);
listztree . add(S4);
system . out . println(jsonutils . tojsonstring(listZtree));
}