簡體   English   中英

JSON 解析錯誤:無法從字符串反序列化“java.time.LocalDateTime”類型的值

[英]JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String

我正在向具有更新日期屬性的外部服務發送請求

@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;

但我在 Postman 中遇到錯誤

"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\

輸入字符串中有毫秒,所以你的格式應該是“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;

您可以刪除注釋 @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 請求可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM