1. 问题
当使用Jackson将一个对象转化为Json时,出现这个错误:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot
construct instance of `java.time.LocalDateTime`
因为对象中含有java.time.LocalDateTime类型的字段。Jackson处理不了。
2. 解决方法
需要指定如何序列化和反序列化java.time.LocalDateTime类型的数据。使用 @JsonDeserialize
和 @JsonSerialize
代码示例:
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@Field("createTime")
private LocalDateTime createTime;
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@Field("updateTime")
private LocalDateTime updateTime;