【发布时间】:2020-12-16 05:51:24
【问题描述】:
我想将 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) 不起作用。
有人知道为什么会这样吗?
【问题讨论】:
-
您的模式中有一个小写的
h,但没有a指定这些时间是AM还是PM。这可能是个问题,但我不确定。将小时数设为大写 H以 24 小时格式描述小时数,然后重试。可以工作... -
是的,正如@deHaar 所说,您的 POJO 属性与您的客户之一不匹配:
createdTimestamp != createTimestamp或者这是一个错字? -
抱歉 createdTimestamp 是我的错字,deHaar 的解决方案对我有用。非常感谢!
-
好...我把它作为未来读者的答案。