package com.hdl.sdk.link.common.utils.gson; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import java.lang.reflect.Type; /** * Created by Tong on 2021/9/8. */ public class GsonConvert { private static Gson gson = null; public static Gson getGson() { if (gson == null) { synchronized (GsonConvert.class) { if (gson == null) { gson = new GsonBuilder() .setPrettyPrinting() .disableHtmlEscaping() .registerTypeAdapter(String.class, new StringTypeAdapter()) .create(); } } } return gson; } public static T copyProperties(Object o, Type type) { return getGson().fromJson(getGson().toJson(o), type); } private static class StringTypeAdapter implements JsonSerializer, JsonDeserializer { @Override public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { if (json instanceof JsonPrimitive) { return json.getAsString(); } else { return json.toString(); } } @Override public JsonElement serialize(String src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src); } } }