![](/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.