實體類中包含了LocalDateTime 類型的屬性,把實體類數據存入Redis后變成這樣:
此時,存入redis不會報錯,但是從redis獲取的時候,會報錯:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
大概意思是反序列化反不回來了。
那么可以在LocalDateTime類型的屬性上加注解指定序列化/反序列化器:
@ApiModelProperty(value = "創建時間") @JsonDeserialize(using = LocalDateTimeDeserializer.class) @JsonSerialize(using = LocalDateTimeSerializer.class) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime time;
注意引入的包:
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
再次啟動,向緩存里放數據,LocalDateTime的數據顯示正常,不會多出很多數據:
獲取緩存也不會報錯了!