fastjson不能反序列化Date(-1+0800)这种格式的json的时间

8ljdwjyq  于 2021-11-27  发布在  Java
关注(0)|答案(5)|浏览(436)

当时间中的时间戳或者时区为负数时,fastjson反序列化报错:Exception in thread "main" com.alibaba.fastjson.JSONException: For input string: "-1+0800"。
这个怎么解决。
`public static class SimpleInfo{
public Calendar arrivalDateTime;
}

public static void main(String[] args){
    String timeString = "{\"ArrivalDateTime\":\"\\/Date(-1+0800)\\/\"}";
    SimpleInfo sinfo = JSON.parseObject(timeString, new TypeReference<SimpleInfo>(){});
}`
31moq8wy

31moq8wy1#

I guess this json is illegal.

z18hc3ub

z18hc3ub2#

but,"{"ArrivalDateTime":"/Date(1+0800)/"}" this json can be deserialized correctly。

wztqucjr

wztqucjr3#

这个问题现在是否有结论呢?1970年以前的json时间无法反序列化。如:/Date(-62135596800000+0800)/

e5nszbig

e5nszbig4#

"/Date(1500000000000-0800)/",这种格式的json日期也不能反序列化为Calendar或Date对象,也就是时间戳或者时区为负数时,都不能被fastjson反序列化,这些格式是.net平台把时间序列化为json的默认格式。

fnvucqvd

fnvucqvd5#

Date.valueOf("1970-01-01")序列化没有问题,但是反序列化为Date类型时就会报错,这个问题有人解决了吗?

相关问题