Redis反序列化LocalDateTime报错

在学习redis的时候,把登录用户存放在redis,因为是用来java8新特性,所以日期用的LocalDateTime类来取代Date类,但是在拿到用户的时候出现序列化错误,因为LocalDateTime在序列化后是这个样子

image.png

你会发现日期很复杂,不是我们预期的那样,结果在反序列化的时候就会报错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

这样重新运行就发现没有错误了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容