jackson替換fastjson


最近fastjson頻繁爆出漏洞,項目組決定將項目中的fastjson全部替換成jackson,該篇博客記錄替換的過程:

可以定義一個JacksonUtil,里面包含幾個函數:

1.序列化函數

原先:fastjson-JSON.toJSONString

替換:jackson-JacksonUtil.beanToJsonStr(Object object)

主要實現:ObjectMapper().writeValueAsString(object)

2.反序列化

原先:fastjson-JSONObject.parseObject

替換:jackson-JacksonUtil.jsonStrToBean(String str, Class<T> targetClass)

主要實現:ObjectMapper().readValue(str, targetClass)

3.屬性定義和序列化和反序列化順序

原先:fastjson-@JSONFiled(name = "xxx", ordinal = 2)

替換:jackson-@JsonProperty(value = "xxx", index = 2)

4.JSONObject

可以替換為Map<String, Object>

5.JSONArray

可以替換為List<Object>

6.map<String, Long>類型序列化和反序列化

fastjson可以利用TypeReference 復雜類型轉換,比如

JSON.parseObject(getNotifyRule(), new TypeReference<Map<String, Long>>()

但是用Jackson,JackUtil.jsonStrToBean(getNotifyRule(), Map.class);轉換的時候,不能直接解析為Long,而是Integer

參考鏈接:

https://blog.csdn.net/zzti_erlie/article/details/79779253

https://www.cnblogs.com/larva-zhh/p/11544317.html#@jsonfield

https://baijiahao.baidu.com/s?id=1668639549525572630&wfr=spider&for=pc

https://www.cnblogs.com/jpfss/p/9056485.html

https://blog.csdn.net/GarfieldEr007/article/details/83829722


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM