前段時間接手一個老專案,迭代開發程序使用fastjson泛型工具時出現了反序列化失敗的問題,對此將該問題與大家分享,防止各位使用該工具的同學踩坑,介面回傳型別如果使用了泛型,在使用TypeReference對泛型介面進行反序列時,有時會出現反序列失敗的情況(當前型別為jsonobject,而不是class)分析原因主要如下:
1.介面回傳對泛型進行了型別指定(String或復雜型別),則TypeReference會將這些型別以鍵值對的方式建立一一對應關系放入Map中,后續再來同樣的指定型別,會從快取中讀取Map資訊找到對應型別來進行反序列化;
2.介面回傳型別如果不指定,TypeReference會讀取父類的默認型別來匹配(簡單型別默認為String,復雜型別默認為JsonObject),這就是導致反序列失敗的原因。
總結:如果要使用TypeReference泛型工具類,所有使用的回傳介面都要指定回傳型別,避免出現上述問題。
uj5u.com熱心網友回復:
然后不明白的一點,為什么自己發帖必須要放幾分。。。。。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/244852.html
標籤:Java相關
