我正在使用 Spring Boot
和 Jackson
序列化/反序列化 JSON 请求/响应。我在尝试以 ISO 格式反序列化 Date
时遇到了一种我想避免的行为。
当我使用无效的月份日期或月份时,Jackson 通过向日期添加额外的天数/月数来处理它。
例如
{
"date": "2018-02-40T15:00:00+01:00"
}
被反序列化为 Mon Mar 12 15:00:00 CET 2018
或者
{
"date": "2018-14-20T15:00:00+01:00"
}
作为 2019 年 2 月 20 日星期三 15:00:00 CET
有没有办法以某种方式强制执行验证?我正在查看 Serialization 的列表和 Deserialization功能,但我找不到任何可能影响此行为的功能。
我正在使用旧的 Java 日期 API - java.util.Date
。
最佳答案
您的回答为我指明了正确的方向。自 2.9+
起,Jackson 支持使用 @JsonFormat
注释进行宽松配置。
@JsonFormat(lenient = OptBoolean.FALSE)
所以我所要做的就是覆盖 POM 中 jackson.version
属性的值,因为我正在使用 Spring Boot
父 POM。
<jackson.version>2.9.4</jackson.version>
再次感谢!
关于java - Jackson 日期反序列化 - "invalid"日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48934700/