繁体   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