解决fastjson反序列化日期0000-00-00失败的方案
22 Jul 2016一、案例场景复原
示例场景里涉及两个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.