FastJson自定義Date類型反序列化

fastjson版本:1.2.38,(Sep, 2017)

需求


有時候我們需要自定義反序列化,例如從服務器接收的字符串爲秒,而fastjson需要的是毫秒。因此需要自定義反序列化。

問題提出


網上很多資料過於陳舊,如http://blog.csdn.net/donggua3694857/article/details/62064985中是自定義類繼承:com.alibaba.fastjson.parser.deserializer.DateFormatDeserializer,或者http://aboutcoder.com/2016/07/22/resolve-the-fastjson-problems-about-date/中是自定義類繼承:com.alibaba.fastjson.parser.deserializer.DateDeserializer

但是在最新的fastjson庫裏(1.2.38, Sep, 2017)沒有DateFormatDeserializer類或者DateDeserializer類。通過查看源代碼,發現目前使用:com.alibaba.fastjson.serializer.DateCodec

問題解決


自定義類SecondDeserializer繼承DateCodec,然後重寫cast方法,如下:

public class SecondDeserializer extends DateCodec {

    public final static SecondDeserializer instance = new SecondDeserializer();

    @Override
    public <T> T cast(DefaultJSONParser parser, Type clazz, Object fieldName, Object val){
        long value = Long.valueOf(String.valueOf(val)) * 1000;
        return super.cast(parser, clazz, fieldName, value);
    }
}

這樣,當json傳來是的秒,能夠轉化爲java中的Date類。

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