Gson

Posted by KANG's BLOG on Tuesday, May 18, 2021

Gson的使用

1. GitHub仓库

gson on GitHub

2. maven引用

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

3. gson工具类

import com.google.gson.*;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.text.DateFormat;
import java.util.*;

/**
 * 封装Gson常用方法工具类
 */
public class JsonUtils {
    /**
     * 不用创建对象,直接使用Gson.就可以调用方法
     */
    private static Gson GSON;

    private static JsonParser JSON_PARSER = new JsonParser();

    /**
     * 私有无参构造方法
     */
    private JsonUtils() {
    }

    //创建Gson
    static {
        if (GSON == null) {
            GSON = new Gson();
        }
    }

    /**
     * 将对象转成json格式
     *
     * @param object 入参为对象
     * @return String 出参为转换后的字符串
     */
    public static String toJSONString(Object object) {
        try {
            return GSON.toJson(object);
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 将json转成特定的cls的对象
     *
     * @param jsonString json串
     * @param cls        class对象
     * @param <T>        对象类型
     * @return 特定对象
     */
    public static <T> T toJavaObject(String jsonString, Class<T> cls) {
        try {
            return GSON.fromJson(jsonString, cls);
        } catch (Exception e) {
        	return null;
        }
    }

    /**
     * 将json转成特定的type的对象
     *
     * @param jsonString json串
     * @param type       type
     * @param <T>        对象类型
     * @return 特定对象
     */
    public static <T> T toJavaObject(String jsonString, Type type) {
        try {
            return GSON.fromJson(jsonString, type);
        } catch (Exception e) {
        	return null;
        }
    }

    // 比toJavaObject(String, JsonObject.class)快,耗时约为后者为2/5
    /**
     * 将json转成JsonElement对象
     *
     * @param jsonString json串
     * @return 特定对象
     */
    public static JsonElement toJsonElement(String jsonString) {
        try {
            return JSON_PARSER.parse(jsonString);
        } catch (Exception e) {
            return null;
        }
    }
}

4. 美化输出json格式

实例化Gson对象时,调用setPrettyPrinting()方法

Gson gson = new GsonBuilder().setPrettyPrinting().create();