在学习redis的时候,把登录用户存放在redis,因为是用来java8新特性,所以日期用的LocalDateTime类来取代Date类,但是在拿到用户的时候出现序列化错误,因为LocalDateTime在序列化后是这个样子
你会发现日期很复杂,不是我们预期的那样,结果在反序列化的时候就会报错
com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of java.time.LocalDateTime
。这里的解决方案是:
- 添加依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.9</version>
</dependency>
<!-- localdatatime序列化的问题 -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.9</version>
</dependency>
- 在对应字段添加注解
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime createTime; // create_time
这样重新运行就发现没有错误了。