問題描述: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的規範來)。源碼 |