JSON 解析错误:无法从 String 中反序列化 \`java.time.LocalDateTime\` 类型的值

新手上路,请多包涵

我正在向具有 updatedDate 属性的外部服务发送请求

@UpdateTimestamp
@Column(name = "updated_date")
private LocalDateTime updatedDate;

当我在我的 DTO 中收到响应时,我正在尝试像这样格式化 LocalDateTime 属性

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss")
private LocalDateTime updatedDate;

但是我在邮递员中遇到错误

"message": "JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String \"2020-04-14T10:45:07.719\": Text '2020-04-14T10:45:07.719' could not be parsed at index 14; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDateTime` from String \"2020-04-14T10:45:07.719\

原文由 Georgi Michev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

输入字符串中有毫秒,所以你的格式应该是“yyyy-MM-dd’T’HH:mm:ss.SSS”

更新:如果毫秒部分由1、2、3位数字组成或者是可选的,您可以使用以下格式:

 @JsonFormat(shape=JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss[.SSS][.SS][.S]")
private LocalDateTime updatedTime;

原文由 Nowhere Man 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以删除注释 @JsonFormat 并让它以默认方式工作。即使我删除了毫秒,它对我来说也很好用。

 @NotNull
@FutureOrPresent(message = ErrorMessages.INVALID_CAMPAIGN_START_DATE)
//@JsonFormat(pattern = "MM/dd/yyyy")
private LocalDateTime campaignStartDate;

JSON请求:

 {  "campaignStartDate" : "2020-12-31T15:53:16",
  "campaignExpDate" : "2021-01-24T15:53:16",
}

{
  "campaignStartDate" : "2020-12-31T15:53:16.45",
  "campaignExpDate" : "2021-01-24T15:53:16.45",
}

{
  "campaignStartDate" : "2020-12-31T15:53:16.445",
  "campaignExpDate" : "2021-01-24T15:53:16.445",
}

这些 JSON 请求可以正常工作。

原文由 Amit Kushwaha 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题