调用redisTemplate.opsForValue().get()抛出异常:opsForValueCould not read JSON: Unrecognized field "enabled"

小熊博客
2021-11-08 / 0 评论 / 91 阅读
温馨提示:
本文最后更新于2021-11-08,若内容或图片失效,请留言反馈。

SpringBoot项目整合RedisTemplate设置序列化后运行异常

image.png

异常原因

返回的JSON里面包含了实体没有的字段导致反序列化失败。查阅相关源码后发现在序列化时,实体类中所有方法的返回值都会序列化,但是反序列化是根据实体类的set方法实现的,所以一旦实体类中存在没有set方法的get方法,或者是有返回值的非get方法,反序列化时就会抛出opsForValueCould not read JSON: Unrecognized field "enabled"异常。

解决方法

  1. 每个转换的实体变量都必须要有set和get方法,总之set和get必须同时存在
  2. 实体类使用注解@JsonIgnoreProperties(ignoreUnknown = true)修饰。