[alibaba/fastjson]Unit十位时间戳如何反序列化成DATE对象

2025-11-03 874 views
9

例如前端传值,"produceTime": "1521770064" 后端接收用 Date produceTime; 反序列化后日期不正确,测试13位时间戳可用

回答

4

我也碰到了,请问解决了吗

9

JAVA时间戳是13位的,识别不了10位的,需要自己处理。

3

https://github.com/alibaba/fastjson/releases/tag/1.2.56 新版本已经支持,配置

JSONField(format="unixtime")
3

您好,我在1.2.58的版本依然遇到了这个问题。看了下源码: if (lexer.token() == JSONToken.LITERAL_INT) { long millis = lexer.longValue(); lexer.nextToken(JSONToken.COMMA); if ("unixtime".equals(format)) { millis *= 1000; } val = millis; } else if (lexer.token() == JSONToken.LITERAL_STRING) { ... } 也就是说现在只在{"time": 1521770064}的case下支持,不能在{"time": "1521770064"}的case下支持,这个能也支持下吗?谢谢~

6

@wenshao 我遇见和楼上同样的问题您好,我在1.2.58的版本依然遇到了这个问题。看了下源码: if (lexer.token() == JSONToken.LITERAL_INT) { long millis = lexer.longValue(); lexer.nextToken(JSONToken.COMMA); if ("unixtime".equals(format)) { millis *= 1000; } val = millis; } else if (lexer.token() == JSONToken.LITERAL_STRING) { ... } 也就是说现在只在{"time": 1521770064}的case下支持,不能在{"time": "1521770064"}的case下支持,这个能也支持下吗?谢谢~