用fastjson反序列化时的一个需要注意的地方

时光毁灭记忆、已成空白 提交于 2020-04-12 15:35:35
  • 问题描述:

    fastjson反序列化时现解析不正确的问题,expiretime属性值不正确。

     

    问题分析:

    当ValidateCode有两个构造函数,且先后位置如图时,fastjson反序列化时,expiretime是不正确的。两个构造函数互换位置后可以正常反序列化。

    加入一个无参的默认构造函数(这个构造函数的位置不重要)也可以解决问题。

    fastjson的相关源码:com.alibaba.fastjson.util.JavaBeanInfo的build方法和com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer的deserialze方法。

    主要关注JavaBeanInfo类中fields和creatorConstructor两个属性的值,基本可以了解为什么会产生上面的问题。

    结论:

    用fastjson进行反序列化时,对应的javabean需要有默认的构造函数(即按照javabean的规范来)。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!