Timestamp反序列化失败,错误信息为“无法将类型为'java.lang.String'的值转换为所需的类型'java.time.Instant'”。

15 浏览
0 Comments

Timestamp反序列化失败,错误信息为“无法将类型为'java.lang.String'的值转换为所需的类型'java.time.Instant'”。

希望有人能指出我在这里缺少什么。

我有一个Spring Boot 2应用程序,其中包含一个rest控制器,它接收一些请求参数,其中一个是java.time.Instant类型的"@RequestParam("offset") Instant offset"。我希望它可以从以秒或毫秒为基础的时间戳(如1604303073000)进行反序列化。

然而,我始终遇到上述异常,源自于org.springframework.format.datetime.standard.InstantFormatter.parse(InstantFormatter.java:50) ~[spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]。

将Instant序列化为以秒或毫秒为基础的时间戳对于这些参数来说是完全正常的:

jackson:

serialization:

write-dates-as-timestamps: true

write-date-timestamps-as-nanoseconds: true

deserialization:

read-date-timestamps-as-nanoseconds: false

但是反过来似乎对反序列化没有任何影响,无论设置为true还是false。显然,Spring只是尝试将我的时间戳应用于错误的格式化程序。

我找到的所有类似问题似乎都暗示这是一件轻而易举的事情,并且是默认行为,然而这已经导致了一些非常沮丧的试错时间。

0