JSONHelper 工具类

package org.platform.utils.json;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


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


import org.apache.commons.beanutils.BeanUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public final class JSONHelper {
@SuppressWarnings("unused")
private static final Logger logger = LoggerFactory
.getLogger(JSONHelper.class);


// 将数组转换成JSON
public static String array2json(Object object) {
JSONArray jsonArray = JSONArray.fromObject(object);
return jsonArray.toString();
}


// 将JSON转换成数组,其中valueClz为数组中存放的对象的Class
@SuppressWarnings("rawtypes")
public static Object json2Array(String json, Class valueClz) {
JSONArray jsonArray = JSONArray.fromObject(json);
return JSONArray.toArray(jsonArray, valueClz);
}


// 将Collection转换成JSON
public static String collection2json(Object object) {
JSONArray jsonArray = JSONArray.fromObject(object);
return jsonArray.toString();
}


// 将Map转换成JSON
public static String map2json(Object object) {
JSONObject jsonObject = JSONObject.fromObject(object);
return jsonObject.toString();
}


// 将JSON转换成Map,其中valueClz为Map中value的Class,keyArray为Map的key
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Map json2Map(Object[] keyArray, String json, Class valueClz) {
JSONObject jsonObject = JSONObject.fromObject(json);
Map classMap = new HashMap();


for (int i = 0; i < keyArray.length; i++) {
classMap.put(keyArray[i], valueClz);
}


return (Map) JSONObject.toBean(jsonObject, Map.class, classMap);
}


// 将POJO转换成JSON
public static String bean2json(Object object) {
JSONObject jsonObject = JSONObject.fromObject(object);
return jsonObject.toString();
}


// 将JSON转换成POJO,其中beanClz为POJO的Class
@SuppressWarnings("rawtypes")
public static Object json2Object(String json, Class beanClz) {
return JSONObject.toBean(JSONObject.fromObject(json), beanClz);
}


// 将String转换成JSON
public static String string2json(String key, String value) {
JSONObject object = new JSONObject();
object.put(key, value);
return object.toString();
}


// 将JSON转换成String
public static String json2String(String json, String key) {
JSONObject jsonObject = JSONObject.fromObject(json);
return jsonObject.get(key).toString();
}


/***
* 将List对象序列化为JSON文本
*/
public static String toJSONString(List 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
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
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
*/
@SuppressWarnings("rawtypes")
public static HashMap toHashMap(Object object) {
HashMap data = new HashMap();
JSONObject jsonObject = JSONHelper.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;
}


/**
* 将json格式的字符串解析成Map对象

  • * json格式:{"name":"admin","retries":"3fff","testname":"ddd","testretries":
    * "fffffffff"}
    */
    @SuppressWarnings("rawtypes")
    public static Map json2Map(String jsonStr) {
    Map data = new HashMap();
    // 将json字符串转换成jsonObject
    JSONObject jsonObject = JSONObject.fromObject(jsonStr);
    Iterator it = jsonObject.keys();
    // 遍历jsonObject数据,添加到Map对象
    while (it.hasNext()) {
    String key = String.valueOf(it.next());
    Object value = jsonObject.get(key);
    data.put(key, value);
    }
    return data;
    }


    /**
    * 将json格式的字符串解析成Map对象

  • * json格式:{"name":"admin","retries":"3fff","testname":"ddd","testretries":
    * "fffffffff"}
    */
    @SuppressWarnings("rawtypes")
    public static Map>> json2MapList(
    String jsonStr) {
    Map>> data = new HashMap>>();
    // 将json字符串转换成jsonObject
    JSONObject jsonObject = JSONObject.fromObject(jsonStr);
    Iterator it = jsonObject.keys();
    // 遍历jsonObject数据,添加到Map对象
    while (it.hasNext()) {
    String key = String.valueOf(it.next());
    Object value = jsonObject.get(key);
    List> list = toList(value);
    data.put(key, list);
    }
    return data;
    }


    /***
    * 将对象转换为List>

    * @param object
    * @return
    */
    // 返回非实体类型(Map)的List
    @SuppressWarnings("rawtypes")
    public static List> toList(Object object) {
    List> list = new ArrayList>();
    JSONArray jsonArray = JSONArray.fromObject(object);
    for (Object obj : jsonArray) {
    JSONObject jsonObject = (JSONObject) obj;
    Map map = new HashMap();
    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;
    }


    // 返回非实体类型(Map)的List
    @SuppressWarnings("rawtypes")
    public static List> toList(JSONArray jsonArray) {
    List> list = new ArrayList>();
    for (Object obj : jsonArray) {
    JSONObject jsonObject = (JSONObject) obj;
    Map map = new HashMap();
    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
    * @param jsonArray
    * @param objectClass
    * @return
    */
    @SuppressWarnings({ "deprecation", "unchecked" })
    public static List toList(JSONArray jsonArray, Class objectClass) {
    return JSONArray.toList(jsonArray, objectClass);
    }


    /***
    * 将对象转换为传入类型的List

    * @param
    * @param jsonArray
    * @param objectClass
    * @return
    */
    @SuppressWarnings({ "unchecked", "deprecation" })
    public static List toList(Object object, Class objectClass) {
    JSONArray jsonArray = JSONArray.fromObject(object);


    return JSONArray.toList(jsonArray, objectClass);
    }


    /***
    * 将JSON对象转换为传入类型的对象

    * @param
    * @param jsonObject
    * @param beanClass
    * @return
    */
    @SuppressWarnings("unchecked")
    public static T toBean(JSONObject jsonObject, Class beanClass) {
    return (T) JSONObject.toBean(jsonObject, beanClass);
    }


    /***
    * 将将对象转换为传入类型的对象

    * @param
    * @param object
    * @param beanClass
    * @return
    */
    @SuppressWarnings("unchecked")
    public static T toBean(Object object, Class beanClass) {
    JSONObject jsonObject = JSONObject.fromObject(object);


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


    /***
    * 将JSON文本反序列化为主从关系的实体

    * @param
    *            泛型T 代表主实体类型
    * @param
    *            泛型D 代表从实体类型
    * @param jsonString
    *            JSON文本
    * @param mainClass
    *            主实体类型
    * @param detailName
    *            从实体类在主实体类中的属性名称
    * @param detailClass
    *            从实体类型
    * @return
    */
    public static T toBean(String jsonString, Class mainClass,
    String detailName, Class detailClass) {
    JSONObject jsonObject = JSONObject.fromObject(jsonString);
    JSONArray jsonArray = (JSONArray) jsonObject.get(detailName);


    T mainEntity = JSONHelper.toBean(jsonObject, mainClass);
    List detailList = JSONHelper.toList(jsonArray, detailClass);


    try {
    BeanUtils.setProperty(mainEntity, detailName, detailList);
    } catch (Exception ex) {
    throw new RuntimeException("主从关系JSON反序列化实体失败!");
    }


    return mainEntity;
    }


    /***
    * 将JSON文本反序列化为主从关系的实体

    * @param 泛型T 代表主实体类型
    * @param 泛型D1 代表从实体类型
    * @param 泛型D2 代表从实体类型
    * @param jsonString
    *            JSON文本
    * @param mainClass
    *            主实体类型
    * @param detailName1
    *            从实体类在主实体类中的属性
    * @param detailClass1
    *            从实体类型
    * @param detailName2
    *            从实体类在主实体类中的属性
    * @param detailClass2
    *            从实体类型
    * @return
    */
    public static T toBean(String jsonString, Class mainClass,
    String detailName1, Class detailClass1, String detailName2,
    Class detailClass2) {
    JSONObject jsonObject = JSONObject.fromObject(jsonString);
    JSONArray jsonArray1 = (JSONArray) jsonObject.get(detailName1);
    JSONArray jsonArray2 = (JSONArray) jsonObject.get(detailName2);


    T mainEntity = JSONHelper.toBean(jsonObject, mainClass);
    List detailList1 = JSONHelper.toList(jsonArray1, detailClass1);
    List detailList2 = JSONHelper.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 代表主实体类型
    * @param 泛型D1 代表从实体类型
    * @param 泛型D2 代表从实体类型
    * @param jsonString
    *            JSON文本
    * @param mainClass
    *            主实体类型
    * @param detailName1
    *            从实体类在主实体类中的属性
    * @param detailClass1
    *            从实体类型
    * @param detailName2
    *            从实体类在主实体类中的属性
    * @param detailClass2
    *            从实体类型
    * @param detailName3
    *            从实体类在主实体类中的属性
    * @param detailClass3
    *            从实体类型
    * @return
    */
    public static T toBean(String jsonString,
    Class mainClass, String detailName1, Class detailClass1,
    String detailName2, Class detailClass2, String detailName3,
    Class 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 = JSONHelper.toBean(jsonObject, mainClass);
    List detailList1 = JSONHelper.toList(jsonArray1, detailClass1);
    List detailList2 = JSONHelper.toList(jsonArray2, detailClass2);
    List detailList3 = JSONHelper.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
    *            主实体类型
    * @param jsonString
    *            JSON文本
    * @param mainClass
    *            主实体类型
    * @param detailClass
    *            存放了多个从实体在主实体中属性名称和类型
    * @return
    */
    @SuppressWarnings("rawtypes")
    public static T toBean(String jsonString, Class mainClass,
    HashMap detailClass) {
    JSONObject jsonObject = JSONObject.fromObject(jsonString);
    T mainEntity = JSONHelper.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;
    }


    @SuppressWarnings("rawtypes")
    public static String listtojson(String[] fields, int total, List list)
    throws Exception {
    String jsonTemp = "{\"total\":" + total + ",\"rows\":[";
    /*
    * for (int j = 0; j < list.size(); j++) { jsonTemp = jsonTemp +
    * "{\"state\":\"closed\","; for (int i = 0; i < fields.length; i++) {
    * String fieldName = fields[i].toString(); values[i] =
    * org.jeecgframework
    * .tag.core.easyui.TagUtil.fieldNametoValues(fieldName, list.get(j));
    * jsonTemp = jsonTemp + "\"" + fieldName + "\"" + ":\"" + values[i] +
    * "\""; if (i != fields.length - 1) { jsonTemp = jsonTemp + ","; } } if
    * (j != list.size() - 1) { jsonTemp = jsonTemp + "},"; } else {
    * jsonTemp = jsonTemp + "}"; } } jsonTemp = jsonTemp + "]}";
    */
    return jsonTemp;
    }


    }
  • 你可能感兴趣的:(java)