当前位置: 代码迷 >> 综合 >> fastjson 3000年问题
  详细解决方案

fastjson 3000年问题

热度:80   发布时间:2023-09-13 09:36:06.0

有一个字段类型是日期的,如果用户没有填写.默认的日期就是9999-99-99 这样,当这样一个日期,使用fastjson反序列化的时候,会报错.我实际的测了一下,2999年还能正常解析.3000年的时候,就报错了.


String str = "{name:'honway',date:'3000-09-09'}";

User user = JSON.parseObject(str,User.class);

System.out.println(user);

具体错误内容如下


com.alibaba.fastjson.JSONException: For input string: "3000-09-09"


日期格式化问题,fastjson默认采用"yyyy-MM-dd HH:mm:ss"格式化,或者传入一个long型的时间

你可以"{name:'honway',date:'3000-09-09 00:00:00'}";

或者你没法修改你数据库的默认值,那就修改默认的格式化格式

JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";


public void test(){ 

Stringstr="{name:'honway',date:'3000-09-09'}";

JSON.DEFFAULT_DATE_FORMAT="yyyy-MM-dd";

User user=JSON.parseObject(str,User.class);

System.out.println(user);    

}

  相关解决方案