我们配置了JacksonJson序列化,但是序列化时间日期时报错,该问题可能有两种情况。
1. jackson默认不支持jdk的时间类序列化
如果我们直接使用的是 new ObjectMapper()
,它默认可能不支持jdk的时间日期序列化,可以通过增加JavaTimeModule
来增加支持。
参考代码如下:
JavaTimeModule javaTimeModule = new JavaTimeModule();
objectMapper.registerModule(javaTimeModule);
JavaTimeModule 对应的依赖库如下:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
2. 我们配置了JavaTimeModule,但是LocalDateTime的序列化器是自己实现的
如果我们配置了自定义的LocalDateTime序列化实现,请务必确认自己实现了 public void serializeWithType(T value, JsonGenerator gen, SerializerProvider serializers, TypeSerializer typeSer)
方法。
我们一般只会实现 public void serialize(T value, JsonGenerator gen, SerializerProvider serializers);
方法,需要额外实现serializeWithType
才可以。