JsonUtils工具类

架包引用:
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.45</version>
</dependency>

<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.5</version>
</dependency>
代码:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang.StringUtils;

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

/**
 * Copyright (C), 2011-2018 {company}
 * FileName: com.mina.utils.JsonUtils.java
 * Author: xxx
 * Email: xxx
 * Date: 2018/6/15 22:50
 * Description: Json工具类
 * History:
 * <Author>      <Time>    <version>    <desc>
 * {xxx}   22:50    1.0          Create
 */
public class JsonUtils {
    /**
     * Gson - 将bean转换成json字符串
     * @param object
     * @return
     * @throws Exception
     */
    public static String beanToJson(Object object) throws Exception{
        if(object == null){
            return null;
        }
        Gson gson = new Gson();
        return gson.toJson(object);
    }

    /**
     * Gson - 将Map转成json
     * @param map
     * @return
     */
    public static String mapToJson(Map<String, Object> map){
        Gson gson = new Gson();
        return gson.toJson(map, Map.class);
    }

    /**
     * Gson - 根据list生成json字符串
     *
     * @param list
     * @return
     */
    public static <T> String fromListByGson(List<T> list) {
        Gson gson = new GsonBuilder().disableHtmlEscaping().create();
        String json = gson.toJson(list);
        return json;
    }

    /**
     * Gson - 将json字符串转换成bean
     * @param json
     * @param clazz
     * @param <T>
     * @return
     * @throws Exception
     */
    public static <T> Object jsonToBean(String json, Class<T> clazz) throws Exception{
        if (StringUtils.isEmpty(json) || clazz == null){
            return null;
        }
        Gson gson = new Gson();
        return  gson.fromJson(json, clazz);
    }

    /**
     * Gson - 根据json字符串和class返回List<T>
     *
     * @param json
     * @param clazz
     * @return
     */
    public static <T> List<T> toListByGson(String json, Class<T> clazz) {
        Gson g = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
        List<JsonObject> jsonObjs = g.fromJson(json, new TypeToken<List<JsonObject>>() {}.getType());
        ArrayList<T> listOfT = new ArrayList<T>();
        for (JsonObject jsonObj : jsonObjs) {
            listOfT.add((T) new Gson().fromJson(jsonObj, clazz));
        }
        return listOfT;
    }


    public static <T> String fromListByFastJson(List<T> list) {
        // 使用 SerializerFeature.DisableCircularReferenceDetect
        // 禁止循环使用,如果不添加,会出现"$ref"这种东西
        String json = JSON.toJSONString(list,
                SerializerFeature.DisableCircularReferenceDetect);
        return json;
    }

    public static <T> String fromObjectByFastJson(Object o) {
        String json = JSON.toJSONString(o,
                SerializerFeature.DisableCircularReferenceDetect);
        return json;
    }

    /**
     * FastJson - 根据json字符串和class返回List<T>
     *
     * @param json
     * @param classOfT
     * @return
     */
    public static <T> List<T> toListByFastJson(String json, Class<T> classOfT) {
        return JSON.parseArray(json, classOfT);
    }

    /**
     * FastJson - 根据json字符串和class返回Object
     *
     * @param json
     * @param classOfT
     * @return
     */
    public static <T> Object toObjectByFastJson(String json, Class<T> classOfT) {
        return JSON.parseObject(json, classOfT);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42231507/article/details/80898272