日期:2014-05-16  浏览次数:20366 次

JSON帮助工具


import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

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

/**
* JSON帮助工具包
* @version 1.0 2011-4-28
* @author
*/
public class JsonUtils {
/**
* 把JSON格式数据转换为Bean领域模型
* @param <T> 领域模型的类型,返回结果会根据此类型来判断返回类型。
* @param json JSON格式数据
* (如果JSON串里的属性在Bean里没有该属性对象的set方法将会报错,
* 如果要实现过滤XXX字段转换请使用JsonConfig方法。)
* @param beanClass 要转换的领域模型类型
* @return 根据beanClass的类型来返回解析的领域模型对象
* @version 1.0 2010-6-28
* @author
*/
public static <T> T jsonToBean(String json, Class<T> beanClass){
JSONObject jsonObject = JSONObject.fromObject(json);
return beanClass.cast(JSONObject.toBean(jsonObject,beanClass));
}
/**
*  把JSON格式数据转换为Bean领域模型
* @param json JSON格式数据
* @param jsonConfig JSON转换格式配置文件(设置方法详细见底部说明,或本类的HELP_JSONCONFIG常量DOM注释。)
* @return 解析的领域模型对象
* @version 1.0 2010-6-29
* @author
*/
public static Object jsonToBean(String json, JsonConfig jsonConfig){
JSONObject jsonObject = JSONObject.fromObject(json);
return  jsonConfig.getRootClass().cast(JSONObject.toBean(jsonObject,jsonConfig));
}
/**
* 把JSON格式数据转换为Bean领域模型集合
* @param <T> 领域模型的类型,返回结果会根据此类型来判断返回类型。
* @param json JSON格式数据
* (如果JSON串里的属性在Bean里没有该属性对象的set方法将会报错,
* 如果要实现过滤XXX字段转换请使用JsonConfig方法。)
* @param beanClass 要转换的领域模型类型
* @return 根据beanClass的类型来返回解析的领域模型对象集合的泛型类型
* @version 1.0 2010-6-29
* @author
*/
@SuppressWarnings("unchecked")
public static <T> List<T> jsonToBeanList(String json, Class<T> beanClass){
JSONArray jsonArray = JSONArray.fromObject(json);
Collection<T> collection = JSONArray.toCollection(jsonArray, beanClass);
List<T> list = new ArrayList<T>();
for (T t : collection) {
    if(beanClass.equals(t.getClass())){
        list.add(t);
    }
}
return list;
}
/**
* 把JSON格式数据转换为Bean领域模型集合
* @param json JSON格式数据
* @param jsonConfig JSON转换格式配置文件(设置方法详细见底部说明,或本类的HELP_JSONCONFIG常量DOM注释。)
* @return 解析的领域模型对象集合
* @version 1.0 2010-6-29
* @author
*/
public static Collection<?> jsonToBeanList(String json, JsonConfig jsonConfig){
JSONArray jsonArray = JSONArray.fromObject(json);
Collection<?> collection = JSONArray.toCollection(jsonArray, jsonConfig);
return collection;
}
/**
* 把一个对象转换为JSON格式数据
* @param bean 领域模型对象
* (如果要过滤默认值的字段或某些字段的值请使用JsonConfig方法。)
* @return JSON格式数据
* @version 1.0 2010-6-28
* @author
*/
public static String beanToJson(Object bean){
return JSONObject.fromObject(bean).toString();
}
/**
* 把一个对象转换为JSON格式数据
* @param bean 领域模型对象
* @param jsonConfig JSON转换格式配置文件(设置方法详细见底部说明,或本类的HELP_JSONCONFIG常量DOM注释。)
* @return JSON格式数据
* @version 1.0 2010-6-28
* @author
*/
public static String beanToJson(Object bean,JsonConfig jsonConfig){
return JSONObject.fromObject(bean,jsonConfig).toString();
}
/**
* 获取JSON格式数据某个属性值
* @param json JSON格式数据
* @param key 要获取的属性名
* @return 指定属性的值
* @version 1.0 2010-6-28
* @author
*/
public static Object getJsonAttribute(String json,String key){
JSONObject jsonObject = JSONObject.fromObject(json);
return jsonObject.get(key);
}
/**
* 获取JSON格式数据某个属性值
* @param <T> 属性值的类型,返回结果会根据此类型来判断返回类型。
* @param json J