无法从字符串中反序列化“java.time.LocalDate”类型的值[重复]
Posted
技术标签:
【中文标题】无法从字符串中反序列化“java.time.LocalDate”类型的值[重复]【英文标题】:Unable deserialize value of type `java.time.LocalDate` from String [duplicate] 【发布时间】:2019-11-24 04:01:37 【问题描述】:由于以下异常,我无法反序列化 Java-8-LocatDate
JSON 解析错误:无法从字符串“15/09/1978”反序列化类型为 java.time.LocalDate
的值:无法反序列化 java.time.LocalDate (java.time.format .DateTimeParseException) 文本“15/09/1978”无法在索引 0 处解析;
包含Date的JSON请求对象如下
[ "employeeName" : "ABC XYZ", “出生日期”:“1978 年 9 月 15 日” ]
我还尝试通过引用 URL Deserialize Java 8 LocalDateTime with JacksonMapper 来实现日期反序列化 但是,下面的代码行
@DateTimeFormat(iso = DateTimeFormatter.ofPattern("dd/mm/yyyy")) 给 以下编译错误
类型不匹配:无法从 DateTimeFormatter 转换为 DateTimeFormat.ISO 在行中
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="EMP_ID", updatable = false, nullable = false)
private long empId;
@Column(name="BIRTH_DATE")
//below line gave compilation error ==> Type mismatch: cannot convert from DateTimeFormatter to DateTimeFormat.ISO
@DateTimeFormat(iso = DateTimeFormatter.ofPattern("dd/mm/yyyy"))
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/mm/yyyy")
private LocalDate birthDate;
请帮我解决这个问题, 提前致谢
【问题讨论】:
Convert LocalDate in DD/MM/YYYY LocalDate 的可能重复项。或者也许只是某种相关。 你查看jackson-modules-java8了吗? 【参考方案1】:我的建议是:
以毫秒为单位发送日期,并以毫秒为单位更改该字符串。
public class DateConverter
public static Date getDate(String sessionDate)
Long sessionOnDate = Long.parseLong(sessionDate);
Date date = new Date(sessionOnDate);
return date;
public static Long getTimeinMilliseconds(String myDate) throws ParseException
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = sdf.parse(myDate);
long millis = date.getTime();
return millis;
在实体中你可以简单地拥有:
public class SessionDynamic
private Date sessionDate;
让我知道:)
【讨论】:
请不要教年轻人使用早已过时且臭名昭著的SimpleDateFormat
类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time
, the modern Java date and time API, 和它的DateTimeFormatter
中做得更好。
当然:) 我会保留这个并用新的编辑@OleV.V. 更新答案
我用过 - @DateTimeFormat(pattern = "DD/MM/YYYY")。我对现代 Java 日期和时间 API java.time 知之甚少。我也想使用@dateTimeFormat 反序列化字符串中的值java.time.LocalDate
。请帮忙以上是关于无法从字符串中反序列化“java.time.LocalDate”类型的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
无法从 VALUE_STRING 令牌中反序列化 java.lang.String[] 的实例
无法在 C# 中反序列化 JSON 结果。输入字符串格式不正确错误
无法从 START_OBJECT 令牌中反序列化 int[] 的实例
无法从 START_ARRAY 令牌中反序列化 Object 的实例