![](/img/trans.png)
[英]Cannot convert value of type 'java.lang.String' to required type 'java.time.LocalDate'
[英]Cannot deserialize value of type `java.time.LocalDate`
在 Spring 引導應用程序中,我從 JSON 文件中讀取數據,對於日期字段,我收到以下錯誤:
2022-08-08 23:39:25 - Resolved [com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type
java.time.LocalDate
from String "5/8/1985": Failed to deserialize java. time.LocalDate: (java.time.format.DateTimeParseException) Text '5/8/1985' 無法在 [Source: (File); 的索引 0 處解析; 行:1,列:113](通過參考鏈:java.util.ArrayList[0]->...
JSOn 文件中的日期格式類似於“3/18/1965”
以下是我的實體和請求:
public class Employee {
// code omitted
// I have really no idea how to format this date
@JsonFormat(pattern = "dd.mm.yyyy", shape = JsonFormat.Shape.STRING)
private LocalDate birthDate;
}
問題與格式有關,但我嘗試了很多組合,需要澄清以下問題才能解決問題:
1.我應該使用哪種數據類型來保存日期(不需要時間和時區)?
2.如何格式化從 JSON 讀取的日期字段? 我應該使用哪個注解,我還應該在定義了birthDate
字段的 Request 和 DTO 類中使用這個注解嗎?
您的格式化模式在多個點上失敗:
m
表示“分鍾”,您需要使用M
表示月份。 參見 Kareem 的評論。 您需要更仔細地研究DateTimeFormatter
class Javadoc 。 並在使用 Jackson 之前練習解析。
您問:
我應該使用哪種數據類型來保持日期(不需要時間和時區)?
使用java.time.LocalDate
。
避免假裝代表日期的可怕java.sql.Date
class。 幾年前,隨着 JSR 310 的采用,它被LocalDate
取代。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.