解决fastjson反序列化日期0000-00-00失败的方案

本文详细分析了fastjson反序列化日期为'0000-00-00'时失败的原因,并提供了两种解决方案:通过设置属性和自定义date反序列化解析器。重点介绍了自定义解析器的实现,以及如何在项目中应用。
摘要由CSDN通过智能技术生成

解决fastjson反序列化日期0000-00-00失败的方案

一、案例场景复原

示例场景里涉及两个class:TestDemo.java, DateBeanDemo.java

// DateBeanDemo.java
public class DateBeanDemo {
       
    /**
     * dateStr field with Date.class
     */
    private Date dateStr;

    /**
     * Get dateStr <br>
     *
     * @return Returns the dateStr. <br>
     */
    public Date getDateStr() {
       
        return dateStr;
    }

    /**
     * Set dateStr <br>
     *
     * @param dateStr The dateStr to set. <br>
     */
    public void setDateStr(Date dateStr) {
       
        this.dateStr = dateStr;
    }
}
// 示例执行例子
public class TestDemo {
       
    public static String jsonStr = "{\"dateStr\":\"0000-00-00\"}";
    public static void main(String[] args) {
       
        DateBeanDemo resultObject = JSON.parseObject(TestDemo.jsonStr, DateBeanDemo.class);
    }
}

执行以上的main方法之后,并没有获取预期的结果,而是在fastjson的序列化解析中便发生了异常,如下

Exception in thread "main" com.alibaba.fastjson.JSONException: For input string: "0000-00-00"
    at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:555)
    at com.alibaba.fastjson.JSON.parseObject(JSON.java:251)
    at com.alibaba.fastjson.JSON.parseObject(JSON.java:227)
    at com.alibaba.fastjson.JSON.parseObject(JSON.java:186)
    at excel.TestDemo.main(TestDemo.java:23)
Caused by: java.lang.NumberFormatException: For input string: "0000-00-00"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Long.parseLong(Long.java:419)
    at java.lang.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值