package cn.emay.sdk.util.json; import java.util.HashMap; import java.util.Map; import cn.emay.sdk.util.json.gson.Gson; import cn.emay.sdk.util.json.gson.GsonBuilder; import cn.emay.sdk.util.json.gson.reflect.TypeToken; /** * json util * * @author 东旭 * */ public class JsonHelper { private static Map gsons = new HashMap(); private static String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss"; static { gsons.put(DEFAULT_DATE_PATTERN, createGson(DEFAULT_DATE_PATTERN)); } private static Gson createGson(String datePattern) { return new GsonBuilder().setDateFormat(datePattern).disableHtmlEscaping().serializeNulls().create(); } public static Gson getGson() { return gsons.get(DEFAULT_DATE_PATTERN); } public static Gson getGson(String datePattern) { Gson gson = gsons.get(datePattern); if (gson == null) { gson = createGson(datePattern); gsons.put(datePattern, gson); } return gson; } public static GsonBuilder newGsonBuilder() { return new GsonBuilder(); } /** * 将对象转换为json串 * * @param obj * @return */ public static String toJsonString(Object obj) { if (obj == null) { return null; } return getGson().toJson(obj); } /** * 将对象转换为json串,自定义日期转换规则 * * @param obj * @param datePattern * @return */ public static String toJsonString(Object obj, String datePattern) { if (obj == null) { return null; } return getGson(datePattern).toJson(obj); } /** * 将json串转换为对象 * * @param clazz * @param jsonString * @return */ public static T fromJson(Class clazz, String jsonString) { if (jsonString == null) { return null; } return getGson().fromJson(jsonString, clazz); } /** * 将json串转换为对象 * * @Type type * @param jsonString * @return */ public static T fromJson(TypeToken token, String jsonString) { if (jsonString == null) { return null; } return getGson().fromJson(jsonString, token.getType()); } /** * 将json串转换为对象 * * @Type type * @param jsonString * @return */ public static T fromJson(TypeToken token, String jsonString, String datePattern) { if (jsonString == null) { return null; } return getGson(datePattern).fromJson(jsonString, token.getType()); } /** * 将json串转换为对象 * * @param clazz * @param jsonString * @return */ public static T fromJson(Class clazz, String jsonString, String datePattern) { if (jsonString == null) { return null; } return getGson(datePattern).fromJson(jsonString, clazz); } }