fastjson之坑-你可能遇到的各種各樣的奇葩問題


1.fastjson之坑

1.序列化是會多字段,少字段
2.有時不能序列化成功

2.原理分析

1.bean中有getXXX方法時,從json到model會增加xxx屬性,有setXXX方法是,從model到json會增加xxx的賦值,
2.在內部類中使用時,不加static變量會不能轉換成功
3.private或protected變量中,缺少get或者set方法會影響轉換,所以而且這些方法中不能有其他的非自動生成的操作,否則這些無關操作也會執行,因為fastjson是通過調用set,get方法來序列化的,而不是根據json串實際的轉換,比如:在反序列化時,如果你的get方法中有打log操作,那么會真的給你打一堆log的
4.這也許說明了fastjson快速的能力是哪里來的,通過調用set,get方法,而不是通過反射,這樣可能帶來數據的錯誤,寫set,get方法的時候就要完全讓自動生成,而不能做其他操作

3.正確且最優的使用方法:

    1.所有需要序列化的字段都用public
    2.所有的public方法開頭不允許是get或者set
    3.內部類一定要加上public static修飾
    4.遵循以上3條,fastjson即可保證極快速又不會發生錯誤
  5.特殊類型的字段,如list,map,bool等,需要在private字段聲明時賦值默認值,而不是直接聲明,如List<SomeType> lstType = new ArrayList<>();,如果需要將list或map置為空,在java中設置為null就可以了
  6.字段中有下划線的,會將下划線按照駝峰性質處理,即去掉下划線查找get或set方法


免責聲明!

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



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