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<String, Gson> gsons = new HashMap<String, Gson>(); 
 | 
  
 | 
    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> T fromJson(Class<T> clazz, String jsonString) { 
 | 
        if (jsonString == null) { 
 | 
            return null; 
 | 
        } 
 | 
        return getGson().fromJson(jsonString, clazz); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 将json串转换为对象 
 | 
     *  
 | 
     * @Type type 
 | 
     * @param jsonString 
 | 
     * @return 
 | 
     */ 
 | 
    public static <T> T fromJson(TypeToken<T> token, String jsonString) { 
 | 
        if (jsonString == null) { 
 | 
            return null; 
 | 
        } 
 | 
        return getGson().fromJson(jsonString, token.getType()); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 将json串转换为对象 
 | 
     *  
 | 
     * @Type type 
 | 
     * @param jsonString 
 | 
     * @return 
 | 
     */ 
 | 
    public static <T> T fromJson(TypeToken<T> 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> T fromJson(Class<T> clazz, String jsonString, String datePattern) { 
 | 
        if (jsonString == null) { 
 | 
            return null; 
 | 
        } 
 | 
        return getGson(datePattern).fromJson(jsonString, clazz); 
 | 
    } 
 | 
  
 | 
} 
 |