问题描述:fastjson反序列化时现解析不正确的问题,expiretime属性值不正确。java
问题分析:当ValidateCode有两个构造函数,且前后位置如图时,fastjson反序列化时,expiretime是不正确的。两个构造函数互换位置后能够正常反序列化。json 加入一个无参的默认构造函数(这个构造函数的位置不重要)也能够解决问题。函数 fastjson的相关源码:com.alibaba.fastjson.util.JavaBeanInfo的build方法和com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer的deserialze方法。ui 主要关注JavaBeanInfo类中fields和creatorConstructor两个属性的值,基本能够了解为何会产生上面的问题。spa 结论:用fastjson进行反序列化时,对应的javabean须要有默认的构造函数(即按照javabean的规范来)。源码 |