用慣了fast json 一時半會兒還真的不肯意用別的序列化組件java
後來公司安全組說fastjson的注入問題一直沒有獲得良好的解決,因此只能棄用,統一換成Gsonjson
Gson使用起來其實也沒那麼麻煩,一般能夠直接實例化一個api
Gson gson = new Gson();
或者安全
Gson gson = new GsonBuilder();
再追加一些序列化的規則ui
而後再本身翻閱gson提供的api差很少就都懂得使用方法了code
也能夠本身寫一些經常使用的組合成一個util複用orm
public class GsonUtil { private static JsonParser jsonParser=new JsonParser(); private static final Gson GSON; private static final Gson GSON_NULL; // 不過濾空值 static { GSON = new GsonBuilder().enableComplexMapKeySerialization() //當Map的key爲複雜對象時,須要開啓該方法 // .serializeNulls() //當字段值爲空或null時,依然對該字段進行轉換 // .excludeFieldsWithoutExposeAnnotation()//打開Export註解,但打開了這個註解,反作用,要轉換和不轉換都要加註解 .setDateFormat("yyyy-MM-dd HH:mm:ss")//序列化日期格式 "yyyy-MM-dd" // .setPrettyPrinting() //自動格式化換行 .disableHtmlEscaping() //防止特殊字符出現亂碼 .create(); GSON_NULL = new GsonBuilder().enableComplexMapKeySerialization() //當Map的key爲複雜對象時,須要開啓該方法 .serializeNulls() //當字段值爲空或null時,依然對該字段進行轉換 // .excludeFieldsWithoutExposeAnnotation()//打開Export註解,但打開了這個註解,反作用,要轉換和不轉換都要加註解 .setDateFormat("yyyy-MM-dd HH:mm:ss")//序列化日期格式 "yyyy-MM-dd" // .setPrettyPrinting() //自動格式化換行 .disableHtmlEscaping() //防止特殊字符出現亂碼 .create(); } //獲取gson解析器 public static Gson getGson() { return GSON; } //獲取gson解析器 有空值 解析 public static Gson getWriteNullGson() { return GSON_NULL; } /** * 根據對象返回json 過濾空值字段 */ public static String toNotNullJsonString(Object object) { return GSON.toJson(object); } /** * 根據對象返回json 不過濾空值字段 */ public static String toJsonString(Object object) { return GSON_NULL.toJson(object); } /** * 將字符串轉化對象 * * @param json 源字符串 * @param classOfT 目標對象類型 * @param <T> * @return */ public static <T> T strToJavaBean(String json, Class<T> classOfT) { return GSON.fromJson(json, classOfT); } /** * 將json轉化爲對應的實體對象 * new TypeToken<List<T>>() {}.getType() * new TypeToken<Map<String, T>>() {}.getType() * new TypeToken<List<Map<String, T>>>() {}.getType() */ public static <T> T fromJson(String json, Type typeOfT) { return GSON.fromJson(json, typeOfT); } /** * 轉成list * * @param gsonString * @param cls * @return */ public static <T> List<T> strToList(String gsonString, Class<T> cls) { return GSON.fromJson(gsonString, new TypeToken<List<T>>() { }.getType()); } /** * 轉成list中有map的 * * @param gsonString * @return */ public static <T> List<Map<String, T>> strToListMaps(String gsonString) { return GSON.fromJson(gsonString, new TypeToken<List<Map<String, String>>>() { }.getType()); } /** * 轉成map * * @param gsonString * @return */ public static <T> Map<String, T> strToMaps(String gsonString) { return GSON.fromJson(gsonString, new TypeToken<Map<String, T>>() { }.getType()); } /** * jsonStr轉JsonObject */ public static JsonObject string2Object(String jsonStr) { return jsonParser.parse(jsonStr).getAsJsonObject(); } /** * jsonStr轉JsonArray */ public static JsonArray string2Array(String jsonStr) { return jsonParser.parse(jsonStr).getAsJsonArray(); } }