java - Jackson 日期反序列化 - "invalid"日期

标签 java json spring spring-boot jackson

我正在使用 Spring BootJackson 序列化/反序列化 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/

相关文章:

json - 在为下游应用程序写入HDFS时,JSON与CSV文件格式的Mertis

python - 如何在Python中解析JSON以获取特定值

java - 使用 Jersey 构建 Web 应用程序

java - "java.net.connectionException"显示连接被拒绝

java - 矩阵 'conditional Logic can be removed' checkstyle

java - JBoss 10 当我将 XML 更改为 JSON 格式以将数据从客户端发送到 REST 端点时,我出现客户端 java.lang.NoClassDefFoundError

java - 如何在项目中添加log4j(用于consol)(使用hibernate和spring)

java - 无法将 Spring MVC 依赖项添加到 Maven 项目

java - JUNG2布局问题: resultant graphs end up too wide

java - 需要在 java 中存储 16 个字节。我应该使用哪种数据类型以及如何使用