1. 程式人生 > >fastjson之坑-你可能遇到的各種各樣的奇葩問題

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即可保證極快速又不會發生錯誤