提问人:PersonuNique 提问时间:9/4/2023 最后编辑:Arvind Kumar AvinashPersonuNique 更新时间:9/5/2023 访问量:164
无法反序列化字符串“Aug 29, 2023 5:48:51 PM”中 java.util.Date 类型的值:预期格式“yyyy-MM-dd HH:mm:ss。SSS”
Can not deserialize value of type java.util.Date from String "Aug 29, 2023 5:48:51 PM": expected format "yyyy-MM-dd HH:mm:ss.SSS"
问:
我正在尝试将此数据“2023 年 8 月 29 日下午 5:48:51”解析为 JSON,但出现以下错误
无法反序列化字符串“Aug 29, 2023 5:48:51 PM”中 java.util.Date 类型的值:预期格式“yyyy-MM-dd HH:mm:ss。SSS”
相应字段的 POJO 声明如下:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss.SSS")
@Column(name = "createdOn")
private Date createdOn;
请帮忙
我试图将该字段的 pojo 声明修改为此
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss.SSS")
@Column(name = "createdOn")
private Date createdOn;
答:
3赞
Arvind Kumar Avinash
9/5/2023
#1
java.time
日期时间 API 及其相应的解析/格式化类型已过时且容易出错。2014 年 3 月,新式日期时间 API 取代了旧版日期时间 API。从那时起,强烈建议切换到 ,即现代日期时间 API。java.util
SimpleDateFormat
java.time
与日期时间字符串对应的格式位于区域设置中。MMM dd, uuuu h:m:s a
en_US
演示:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
class Main {
public static void main(String[] args) {
DateTimeFormatter parser = DateTimeFormatter.ofPattern("MMM dd, uuuu h:m:s a", new Locale("en_US"));
System.out.println(LocalDateTime.parse("Aug 29, 2023 5:48:51 PM", parser));
}
}
输出:
2023-08-29T17:48:51
根据此说明,可以在代码中进行以下更改:
@JsonFormat(pattern = "MMM dd, uuuu h:m:s a", shape = JsonFormat.Shape.STRING, locale = "en_US")
@Column(name = "createdOn")
private LocalDateTime createdOn;
从 Trail 了解新式日期时间 API:日期时间
评论
1赞
PersonuNique
9/5/2023
谢谢阿维纳什,这真的帮助了我。
评论
Date
LocalDateTme