https://github.com/alibaba/fastjson/blob/72a2df2a64c2c09c4fdb96563362690449711b6b/src/main/java/com/alibaba/fastjson/util/TypeUtils.java#L342
这里应该是不能进判断的 这个时间格式是 阿里开放平台返回的时间格式 直接用 yyyyMMddHHmmssSSSZ 是可以解析成功的 但是FastJSON这里没有做处理
Q
[alibaba/fastjson]请问 20181229162849000+0800 这样的时间解析错误 怎么处理
7
A
回答
3
异常为 com.alibaba.fastjson.JSONException: For input string: \"20181229162849000+0800\"
具体处理代码在 TypeUtils.java:307
因为该字符串不包含 - 所以进入了数字解析流程 导致 Long 解析错误
0
补充一下 是 jsonObject.getJSONArray("xxx").toJavaList() 触发的 单独的解析好像是可以的 单独也不行
List<Order> result = new ArrayList<>(array.size());
array.forEach(o -> result.add(((JSONObject) o).toJavaObject(Order.class)));
return result;
3
通过JSONField配置format
8
@wenshao 我配置过format了 但是你看上面的源码 没有进入format的格式化判断 因为字符串不包含 - 这个符号 然后进入了 Long.parseLong 的流程 结果就是 Caused by: java.lang.NumberFormatException: For input string: "20181229162849000+0800"
6
问题重现并修复,谢谢反馈
1
问题已修复,请用新版本 https://github.com/alibaba/fastjson/releases/tag/1.2.55