使用Jackson反序列化'6/18/2021 5:25:57 PM'格式日期时间字符串报错如何解决?
问题原因
- 你当前配置的日期格式
dd-MM-yyyy HH:mm:ss与接口实际返回的6/18/2021 5:25:57 PM完全不匹配,具体差异如下:- 分隔符错误:实际使用
/作为日期分隔符,你配置的是- - 日期顺序错误:实际为
月/日/年顺序,你配置的是日-月-年 - 小时制不匹配:实际为12小时制且携带PM/AM标识,你配置的是24小时制
HH,缺少上下午标识匹配位 - 位数规则不匹配:实际返回的月份、日期、小时均允许无前导零,你配置的
dd/MM/HH要求必须为两位数字
- 分隔符错误:实际使用
解决方法
- 修改字段注解配置为如下格式即可,无特殊自定义逻辑可以去掉
@JsonDeserialize注解:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "M/d/yyyy h:mm:ss a", locale = "en_US") @JsonProperty("DateModified") private LocalDateTime dateModified;
参数说明:
M:兼容无前导零的月份格式d:兼容无前导零的日期格式h:适配12小时制的小时规则a:匹配PM/AM上下午标识- 显式指定
locale = "en_US"是为了避免中文系统默认Locale无法识别英文的PM/AM标识
- 若项目未引入Jackson的JSR310时间处理模块,需先添加对应依赖,Maven配置示例如下:
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>与项目使用的jackson核心版本保持一致即可</version> </dependency>
SpringBoot项目默认已集成该依赖,无需额外引入。
内容的提问来源于stack exchange,提问作者angus
相关产品推荐
相关产品推荐

