You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析日期字符串转JSON时java.util.Date反序列化失败求助

解决方案

问题出在@JsonFormat注解指定的日期格式和输入的字符串格式完全不匹配:输入是英文月份缩写格式(如Aug 29, 2023 5:48:51 PM),但你配置的是yyyy-MM-dd HH:mm:ss.SSS,导致Jackson无法完成反序列化。

修改POJO字段的注解,使用匹配输入格式的pattern,并补充必要的时区和Locale设置:

@JsonFormat(shape = JsonFormat.Shape.STRING, 
            pattern = "MMM dd, yyyy h:mm:ss a", 
            timezone = "GMT+8", 
            locale = "en_US")
@Column(name = "createdOn")
private Date createdOn;

参数说明:

  • pattern="MMM dd, yyyy h:mm:ss a":
    • MMM:匹配英文月份缩写(如Aug)
    • dd:两位日期数字
    • yyyy:四位年份
    • h:12小时制的小时数(对应输入里的5)
    • a:匹配AM/PM标记
  • timezone:根据业务场景指定正确时区,避免解析时出现时间偏移
  • locale="en_US":确保Jackson用英文Locale解析月份缩写,避免因默认Locale不同导致解析失败

如果你的项目使用Java 8+版本,更建议替换java.util.Date为LocalDateTime,配合@JsonFormat使用会更简洁且无时区问题:

@JsonFormat(pattern = "MMM dd, yyyy h:mm:ss a", locale = "en_US")
@Column(name = "createdOn")
private LocalDateTime createdOn;

内容的提问来源于stack exchange,提问作者PersonuNique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:41:00