解决JDK8中LocalDateTime(反)序列化问题,报错com.fasterxml.jackson.datatype:jackson-datatype-jsr310
注:在Java8中,LocalDateTime类型的字段默认不受SpringBoot支持,需要添加jackson-datatype-jsr310依赖以实现序列化和反序列化。解决方案包括在pom.xml中引入特定版本的依赖,并在LocalDateTime字段上使用@JsonSerialize,@JsonDeserialize和@JsonFormat注解来指定序列化和反序列化的类及时间格式。
默认情况下,SpringBoot 搭配 Java 8不支持LocalDateTime需要添加com.fasterxml.jackson.datatype:jackson-datatype-jsr310依赖
原因:没有添加序列化和反序列化器
解决方案如下:
添加依赖
<!-- 时间-->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.13.0</version>
</dependency>
为所有LocalDateTime字段添加序列化以及反序列化器注解,例如:
@JsonSerialize(using = LocalTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(pattern = "HH:mm:ss")
private LocalTime xxx;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime xxx;
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate xxx;