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类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值