簡體   English   中英

無法反序列化“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 類中使用這個注解嗎?

您的格式化模式在多個點上失敗:

  • 您指定 FULL STOP(點)字符作為分隔符。 但是您的示例輸入數據具有 SOLIDUS(斜杠)字符。
  • 您使用了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.

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