SpringBoot 日期转换错误JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime`
LocalDateTime
1、java 中 LocalDate
类型的数据在 swagger 上进行测试时,以json
格式输入时格式为2018-07-09
,需要特别注意的是,07和09是两位数字,不是一位数字。
2、如果日期是 LocalDate 类型,那么不论是前台传String格式日期给后台,还是后台返回格式化传给前端的日期,JacksonAutoConfiguration会自动处理。
3、如果日期是LocalDateTime类型,那么前端到后端、后端返回给前端均需要我们进行处理。因为下面yml中的配置不适用于Java 8日期类型,例如LocalDate和LocalDateTime,它只使用于Date或DateTime类型的字段。
#日期格式化
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
解决方案:增加LocalDateTimeConfig配置类
/**
* LocalDateTime全局格式
*/
@Configuration
public class LocalDateTimeGlobalConfig {
private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
/**
* 配置LocalDateTime类型序列化与反序列化
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
/*return new Jackson2ObjectMapperBuilderCustomizer() {
@Override
public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
jacksonObjectMapperBuilder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN)));
jacksonObjectMapperBuilder.deserializers(new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN)));
}
};*/
//这种方式等同于上边
return builder -> {
builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN)));
builder.deserializers(new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN)));
};
}
}
【注】
1、也可以用转换器来解决该问题。
参考文章:SpringBoot中对LocalDateTime进行格式化并解析_流烟默的博客-CSDN博客_localdatetime格式化 yyyymmdd注解
2、 Date和LocalDateTime均可以使用的解决方案(我认为这种用处不大),参考文章:
SpringBoot做全局的日期格式化LocalDateTime_梁可爱的博客-CSDN博客
SpringBoot中对LocalDateTime进行格式化并解析_流烟默的博客-CSDN博客_localdatetime格式化 yyyymmdd注解
3、get请求获取LocalDateTime的方式与Date一样,都是使用注解:
@GetMapping("date")
public Object date(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime date) {
return date;
}
@GetMapping("date2")
public Object date(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) {
return date;
}
4、 解决的原理关键在于JacksonAutoConfiguration类,
原理分析可以参考以下文章:
Spring Boot2自动化配置及使用jackson进行json解析_洛阳桥边的博客-CSDN博客
https://www.jianshu.com/p/560e9b114c29
更多推荐
所有评论(0)