importjava.util.ArrayList;importjava.util.Collection;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;importorg.apache.commons.beanutils.BeanUtils;publicclassJSONUtils
{/***
*@authorwangwei JSON工具类
*@param
**//***
* 将List对象序列化为JSON文本*/publicstaticString toJSONString(Listlist)
{
JSONArray jsonArray=JSONArray.fromObject(list);returnjsonArray.toString();
}/***
* 将对象序列化为JSON文本
*@paramobject
*@return*/publicstaticString toJSONString(Object object)
{
JSONArray jsonArray=JSONArray.fromObject(object);returnjsonArray.toString();
}/***
* 将JSON对象数组序列化为JSON文本
*@paramjsonArray
*@return*/publicstaticString toJSONString(JSONArray jsonArray)
{returnjsonArray.toString();
}/***
* 将JSON对象序列化为JSON文本
*@paramjsonObject
*@return*/publicstaticString toJSONString(JSONObject jsonObject)
{returnjsonObject.toString();
}/***
* 将对象转换为List对象
*@paramobject
*@return*/publicstaticList toArrayList(Object object)
{
List arrayList=newArrayList();
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);
}
}returnarrayList;
}/***
* 将对象转换为Collection对象
*@paramobject
*@return*/publicstaticCollection toCollection(Object object)
{
JSONArray jsonArray=JSONArray.fromObject(object);returnJSONArray.toCollection(jsonArray);
}/***
* 将对象转换为JSON对象数组
*@paramobject
*@return*/publicstaticJSONArray toJSONArray(Object object)
{returnJSONArray.fromObject(object);
}/***
* 将对象转换为JSON对象
*@paramobject
*@return*/publicstaticJSONObject toJSONObject(Object object)
{returnJSONObject.fromObject(object);
}/***
* 将对象转换为HashMap
*@paramobject
*@return*/publicstaticHashMap toHashMap(Object object)
{
HashMapdata=newHashMap();
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);
}returndata;
}/***
* 将对象转换为List>
*@paramobject
*@return*///返回非实体类型(Map)的ListpublicstaticList>toList(Object object)
{
List>list=newArrayList>();
JSONArray jsonArray=JSONArray.fromObject(object);for(Object obj : jsonArray)
{
JSONObject jsonObject=(JSONObject) obj;
Mapmap=newHashMap();
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);
}returnlist;
}/***
* 将JSON对象数组转换为传入类型的List
*@param
*@paramjsonArray
*@paramobjectClass
*@return*/publicstaticListtoList(JSONArray jsonArray, ClassobjectClass)
{returnJSONArray.toList(jsonArray, objectClass);
}/***
* 将对象转换为传入类型的List
*@param
*@paramjsonArray
*@paramobjectClass
*@return*/publicstaticListtoList(Object object, ClassobjectClass)
{
JSONArray jsonArray=JSONArray.fromObject(object);returnJSONArray.toList(jsonArray, objectClass);
}/***
* 将JSON对象转换为传入类型的对象
*@param
*@paramjsonObject
*@parambeanClass
*@return*/publicstaticT toBean(JSONObject jsonObject, ClassbeanClass)
{return(T) JSONObject.toBean(jsonObject, beanClass);
}/***
* 将将对象转换为传入类型的对象
*@param
*@paramobject
*@parambeanClass
*@return*/publicstaticT toBean(Object object, ClassbeanClass)
{
JSONObject jsonObject=JSONObject.fromObject(object);return(T) JSONObject.toBean(jsonObject, beanClass);
}/***
* 将JSON文本反序列化为主从关系的实体
*@param 泛型T 代表主实体类型
*@param 泛型D 代表从实体类型
*@paramjsonString JSON文本
*@parammainClass 主实体类型
*@paramdetailName 从实体类在主实体类中的属性名称
*@paramdetailClass 从实体类型
*@return*/publicstaticT toBean(String jsonString, ClassmainClass,
String detailName, ClassdetailClass)
{
JSONObject jsonObject=JSONObject.fromObject(jsonString);
JSONArray jsonArray=(JSONArray) jsonObject.get(detailName);
T mainEntity=JSONUtils.toBean(jsonObject, mainClass);
ListdetailList=JSONUtils.toList(jsonArray, detailClass);try{
BeanUtils.setProperty(mainEntity, detailName, detailList);
}catch(Exception ex)
{thrownewRuntimeException("主从关系JSON反序列化实体失败!");
}returnmainEntity;
}/***
* 将JSON文本反序列化为主从关系的实体
*@param泛型T 代表主实体类型
*@param泛型D1 代表从实体类型
*@param泛型D2 代表从实体类型
*@paramjsonString JSON文本
*@parammainClass 主实体类型
*@paramdetailName1 从实体类在主实体类中的属性
*@paramdetailClass1 从实体类型
*@paramdetailName2 从实体类在主实体类中的属性
*@paramdetailClass2 从实体类型
*@return*/publicstaticT toBean(String jsonString, ClassmainClass,
String detailName1, ClassdetailClass1, String detailName2,
ClassdetailClass2)
{
JSONObject jsonObject=JSONObject.fromObject(jsonString);
JSONArray jsonArray1=(JSONArray) jsonObject.get(detailName1);
JSONArray jsonArray2=(JSONArray) jsonObject.get(detailName2);
T mainEntity=JSONUtils.toBean(jsonObject, mainClass);
ListdetailList1=JSONUtils.toList(jsonArray1, detailClass1);
ListdetailList2=JSONUtils.toList(jsonArray2, detailClass2);try{
BeanUtils.setProperty(mainEntity, detailName1, detailList1);
BeanUtils.setProperty(mainEntity, detailName2, detailList2);
}catch(Exception ex)
{thrownewRuntimeException("主从关系JSON反序列化实体失败!");
}returnmainEntity;
}/***
* 将JSON文本反序列化为主从关系的实体
*@param泛型T 代表主实体类型
*@param泛型D1 代表从实体类型
*@param泛型D2 代表从实体类型
*@paramjsonString JSON文本
*@parammainClass 主实体类型
*@paramdetailName1 从实体类在主实体类中的属性
*@paramdetailClass1 从实体类型
*@paramdetailName2 从实体类在主实体类中的属性
*@paramdetailClass2 从实体类型
*@paramdetailName3 从实体类在主实体类中的属性
*@paramdetailClass3 从实体类型
*@return*/publicstaticT toBean(String jsonString,
ClassmainClass, String detailName1, ClassdetailClass1,
String detailName2, ClassdetailClass2, String detailName3,
ClassdetailClass3)
{
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);
ListdetailList1=JSONUtils.toList(jsonArray1, detailClass1);
ListdetailList2=JSONUtils.toList(jsonArray2, detailClass2);
ListdetailList3=JSONUtils.toList(jsonArray3, detailClass3);try{
BeanUtils.setProperty(mainEntity, detailName1, detailList1);
BeanUtils.setProperty(mainEntity, detailName2, detailList2);
BeanUtils.setProperty(mainEntity, detailName3, detailList3);
}catch(Exception ex)
{thrownewRuntimeException("主从关系JSON反序列化实体失败!");
}returnmainEntity;
}/***
* 将JSON文本反序列化为主从关系的实体
*@param 主实体类型
*@paramjsonString JSON文本
*@parammainClass 主实体类型
*@paramdetailClass 存放了多个从实体在主实体中属性名称和类型
*@return*/publicstaticT toBean(String jsonString, ClassmainClass,
HashMapdetailClass)
{
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)
{thrownewRuntimeException("主从关系JSON反序列化实体失败!");
}
}returnmainEntity;
}
}