七、java项目常用工具类之json序列号工具类

项目环境:

jdk1.8+spring4.3.12

一、问题描述及试用场景:

在项目开发中,打印日志时需要把实体类json序列化或者网络传输时也需要json序列化。

二、样例代码:

package org.egg.utils;


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;

import java.util.*;

/**
 * @author dataochen
 * @Description
 * @date: 2017/11/7 17:51
 */
public class JsonUtil {
    /**
     * JSON字符串转换成对象
     *
     * @param jsonString
     *            需要转换的字符串
     * @param type
     *            需要转换的对象类型
     * @return 对象
     */
    public static <T> T fromJson(String jsonString, Class<T> type) {
        JSONObject jsonObject = JSONObject.parseObject(jsonString);
        return (T) JSONObject.toJavaObject(jsonObject, type);
    }

    /**
     * 将JSONArray对象转换成list集合
     *
     * @param jsonArr
     * @return
     */
    public static List jsonToList(JSONArray jsonArr) {
        List list = new ArrayList();
        for (Object obj : jsonArr) {
            if (obj instanceof JSONArray) {
                list.add(jsonToList((JSONArray) obj));
            } else if (obj instanceof JSONObject) {
                list.add(jsonToMap((JSONObject) obj));
            } else {
                list.add(obj);
            }
        }
        return list;
    }

    /**
     * 将json字符串转换成map对象
     *
     * @param json
     * @return
     */
    public static Map, Object> jsonToMap(String json) {
        JSONObject obj = JSONObject.parseObject(json);
        return jsonToMap(obj);
    }

    /**
     * 将JSONObject转换成map对象
     *
     * @param obj
     * @return
     */
    public static Map, Object> jsonToMap(JSONObject obj) {
        Set set = obj.keySet();
        Map, Object> map = new HashMap, Object>(set.size());
        for (Object key : obj.keySet()) {
            Object value = obj.get(key);
            if (value instanceof JSONArray) {
                map.put(key.toString(), jsonToList((JSONArray) value));
            } else if (value instanceof JSONObject) {
                map.put(key.toString(), jsonToMap((JSONObject) value));
            } else {
                map.put(key.toString(), obj.get(key));
            }

        }
        return map;
    }

    /**
     * log,显示null;对象转换为json字符串
     * @param obj
     * @return
     */
    public static String logObjToString(Object obj){
        return JSONObject.toJSONString(obj, SerializerFeature.WriteMapNullValue);
    }
}
 
  


代码所用jar包maven坐标:



    com.alibaba
    fastjson
    1.2.39


项目地址:https://github.com/SuperEggMan/renting_frame_finish_bek; ps:感兴趣的可以start哦!

声明:此项目仅是抛砖引玉,内容不是特别完善。如有转载,请注明此处。


你可能感兴趣的:(springBoot基础项目)