java使用json-lib库的json工具类.

2018-12-18  本文已影响5人  凯睿看世界

原文:
http://www.cnblogs.com/mrye/archive/2012/10/20/2731852.html

/**
 * 处理json的工具类,负责json数据转换成java对象和java对象转换成json
 *
 * @since 2012年7月4日22:36:43
 * @author leaves,QQ:1330771552
 */
public class JsonUtil {
    /**
     * 从一个JSON 对象字符格式中得到一个java对象
     *
     * @param jsonString
     * @param pojoCalss
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> T jsonToObject(String jsonString, Class<T> pojoCalss) {
        Object pojo;
        JSONObject jsonObject = JSONObject.fromObject(jsonString);
        pojo = JSONObject.toBean(jsonObject, pojoCalss);
        return (T) pojo;
    }
 
    /**
     * json字符串转换成集合
     *
     * @param jsonString
     * @param pojoClass
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> List<T> jsonToList(String jsonString, Class<T> pojoClass) {
        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        JSONObject jsonObject;
        Object pojoValue;
        List<T> list = new ArrayList<T>();
        for (int i = 0; i < jsonArray.size(); i++) {
            jsonObject = jsonArray.getJSONObject(i);
            pojoValue = JSONObject.toBean(jsonObject, pojoClass);
            list.add((T) pojoValue);
        }
        return list;
    }
 
    /**
     * json字符串转换成集合
     *
     * @param jsonString
     * @param pojoClass
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> List<T> jsonToList(String jsonString, Class<T> pojoClass, String dataFormat) {
        JsonConfig jsonConfig = configJson(dataFormat);
        JSONArray jsonArray = JSONArray.fromObject(jsonString, jsonConfig);
        JSONObject jsonObject;
        Object pojoValue;
        List<T> list = new ArrayList<T>();
        for (int i = 0; i < jsonArray.size(); i++) {
            jsonObject = jsonArray.getJSONObject(i);
            pojoValue = JSONObject.toBean(jsonObject, pojoClass);
            list.add((T) pojoValue);
        }
        return list;
    }
 
    /**
     * 将java对象转换成json字符串
     *
     * @param javaObj
     * @return
     */
    public static String objectToJson(Object javaObj) {
        JSONObject json;
        json = JSONObject.fromObject(javaObj);
        return json.toString();
    }
 
    /**
     * 将java对象转换成json字符串,并设定日期格式
     *
     * @param javaObj
     *            要转换的java对象
     * @param dataFormat
     *            制定的日期格式
     * @return
     */
    public static String objectToJson(Object javaObj, String dataFormat) {
        JSONObject json;
        JsonConfig jsonConfig = configJson(dataFormat);
        json = JSONObject.fromObject(javaObj, jsonConfig);
        return json.toString();
 
    }
 
    /**
     * list变成json
     *
     * @param list
     * @return
     */
    public static <T> String listToJson(List<T> list) {
        JSONArray json;
        json = JSONArray.fromObject(list);
        return json.toString();
    }
 
    /**
     * list变成json
     *
     * @param list
     * @return
     */
    public static <T> String listToJson(List<T> list, String dataFormat) {
        JSONArray json;
        JsonConfig jsonConfig = configJson(dataFormat);
        json = JSONArray.fromObject(list, jsonConfig);
        return json.toString();
    }
 
    /**
     * JSON 时间解析器
     *
     * @param datePattern
     * @return
     */
    public static JsonConfig configJson(final String datePattern) {
 
        JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] { datePattern }));
 
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setIgnoreDefaultExcludes(false);
        jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
        jsonConfig.registerJsonValueProcessor(Date.class, new JsonValueProcessor() {
 
            @Override
            public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
                if (value instanceof Date) {
                    String str = new SimpleDateFormat(datePattern).format((Date) value);
                    return str;
                }
                return value == null ? null : value.toString();
            }
 
            @Override
            public Object processArrayValue(Object value, JsonConfig jsonConfig) {
                String[] obj = {};
                if (value instanceof Date[]) {
                    SimpleDateFormat sf = new SimpleDateFormat(datePattern);
                    Date[] dates = (Date[]) value;
                    obj = new String[dates.length];
                    for (int i = 0; i < dates.length; i++) {
                        obj[i] = sf.format(dates[i]);
                    }
                }
                return obj;
            }
        });
        return jsonConfig;
    }
}
上一篇下一篇

猜你喜欢

热点阅读