我正在将我的Sping Boot 应用程序升级到Spring Boot 2.7.8和Java 11。升级后,我得到了ZonedDateTime对象不同的rest响应。
我的请求包含“2023-06- 23 T18:13:06.630Z[UTC]”,并且我在响应中返回与Map键相同的请求对象。但在响应中,从毫秒部分结束0被修剪“2023-06- 23 T18:13:06.63 Z[UTC]”。
Request:
{
"dateList": [
"2023-06-23T18:13:06.630Z[UTC]"
]
}
Response:
{
"dateList": {
"2023-06-23T18:13:06.63Z[UTC]": "2023-06-23T11:13:06.630-07:00"
}
}
以前有人遇到过这个问题吗?
这个问题的任何解决方案,因为我使用ZonedDateTime的Map键,我需要保持一致。
1条答案
按热度按时间roqulrg31#
这是Jackson的一个已知问题,会影响
ZonedDateTime
对象的序列化。这个问题是由于Jackson默认使用Java内置的DateTimeFormatter来序列化和反序列化日期和时间,所以这种格式不会以毫秒为单位保留尾随的零。
要解决此问题,可以将Jackson配置为使用自定义日期/时间格式,该格式以毫秒为单位保留尾随零
我尝试了这个方法,并为Jackson创建了一个custome配置: