杰克逊日期反序列化-每月的“无效”日期

Tom*_*lik 1 java spring json jackson spring-boot

我使用Spring BootJackson串行化/反序列化JSON请求/响应。尝试以Date我想避免的ISO格式反序列化时遇到了一种行为。

当我使用无效的月份或年份中的某天时,Jackson会通过在日期中添加额外的天数/月份来处理它。

例如

{
    "date": "2018-02-40T15:00:00+01:00"
}
Run Code Online (Sandbox Code Playgroud)

反序列化为 Mon Mar 12 15:00:00 CET 2018

要么

{
    "date": "2018-14-20T15:00:00+01:00"
}
Run Code Online (Sandbox Code Playgroud)

Wed Feb 20 15:00:00 CET 2019

有办法以某种方式强制执行验证吗?我正在查看序列化序列功能列表,但找不到任何可能影响此行为的功能。

我正在使用旧的Java Date API- java.util.Date

Tom*_*lik 5

您的回答为我指明了正确的方向。Jackson @JsonFormat自以来支持使用注释的宽大处理配置2.9+

@JsonFormat(lenient = OptBoolean.FALSE)
Run Code Online (Sandbox Code Playgroud)

因此,我要做的就是jackson.version在使用Spring Boot父POM 时覆盖POM 中的属性值。

<jackson.version>2.9.4</jackson.version>
Run Code Online (Sandbox Code Playgroud)

再次感谢!