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