如何解决JsonDeserialize不适用于LocalDateTime
我想将客户端的POST请求发送到后端,在POJO中,我有两个字段LocalDate和LocalDateTime,如下所示:
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "dd.MM.yyyy - hh:mm:ss")
private LocalDateTime createdTimestamp;
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "dd.MM.yyyy")
private LocalDate expiredDate;
客户端将发送带有以下内容的请求:
{
"expiredDate" : "01.01.2020","createdTimestamp" : "01.02.2020 - 10:10:10"
}
但是,在后端,我有一个例外:
java.lang.NoSuchMethodError:
com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
如果我将createdTimestamp
放在请求的正文之外,那么它就起作用了。似乎只有注释@JsonDeserialize(using = LocalDateDeserializer.class)
有效,而@JsonDeserialize(using = LocalDateTimeDeserializer.class)
无效。
有人知道为什么会这样吗?
解决方法
您在模式中使用12h格式(hh
)的小时符号,但是该模式不完整,因为它缺少AM
/ PM
的指示符成为a
。留下该指标会使时间表达模棱两可,它可以是10 AM
或10 PM
(24h格式的22
)。
您只需将格式切换为24h格式(HH
),就可以清楚地看到时间。
赞:
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "dd.MM.yyyy - HH:mm:ss")
private LocalDateTime createdTimestamp;
,
您不需要使用自定义反序列化器。这是一个带有答案的问题,可以解决您的问题并且可以解决该问题:Spring Data JPA - ZonedDateTime format for json serialization
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。