您的位置:首页 > 编程语言 > Java开发

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

2017-11-12 15:55 316 查看
项目环境:

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<Object> jsonToList(JSONArray jsonArr) {
List<Object> list = new ArrayList<Object>();
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<String, Object> jsonToMap(String json) {
JSONObject obj = JSONObject.parseObject(json);
return jsonToMap(obj);
}

/**
* 将JSONObject转换成map对象
*
* @param obj
* @return
*/
public static Map<String, Object> jsonToMap(JSONObject obj) {
Set<?> set = obj.keySet();
Map<String, Object> map = new HashMap<String, 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坐标:

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>1.2.39</version>

</dependency>

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

声明:此项目仅是抛砖引玉,内容不是特别完善。如有转载,请注明此处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 工具类