用fastjson反序列化時的一個需要注意的地方 原

  • 問題描述:

    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的規範來)。

  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章