Redis报错UnrecognizedPropertyException: Unrecognized field问题

 更新时间:2024年10月28日 16:53:51   作者:程序员大阳  
在使用SpringBoot访问Redis时,报错提示识别不了属性headPart,经过排查,发现并非Serializable或getset方法问题,而是存在一个方法getHeadPart,但无headPart属性,解决方案是将getHeadPart改为makeHeadPart

1. 现象

Spring Boot访问Redis,取出对象时报错

报错信息:

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "headPart" 
    at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:823)
    at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1153)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
    at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer._deserialize(AsArrayTypeDeserializer.java:116)
    at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer.deserializeTypedFromAny(AsArrayTypeDeserializer.java:71)
    at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserializeWithType(UntypedObjectDeserializer.java:712)
    at com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:68)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3129)
    at org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer.deserialize(Jackson2JsonRedisSerializer.java:73)
    ... 39 common frames omitted

2. 排查

最开始以为忘了写implements Serializable,检查后不是该问题。

然后以为是不是忘了写get set方法,检查后也不是。

最后发现了细节提示:

Unrecognized field "headPart"

也就是说识别不了属性headPart

恍然大悟,原来我写了一个方法getHeadPart,但是并没有headPart属性

3. 解决

将getHeadPart改为makeHeadPart即可…

像jackson这种序列化工具是依赖反射来识别方法属性的,get开头的方法容易误导序列化工具。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Redis Cluster集群主从切换的踩坑与填坑

    Redis Cluster集群主从切换的踩坑与填坑

    这篇文章主要介绍了Redis Cluster集群主从切换的踩坑与填坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 硬核!15张图解Redis为什么这么快(推荐)

    硬核!15张图解Redis为什么这么快(推荐)

    作为一名服务端工程师,工作中你肯定和 Redis 打过交道。Redis为什么快,这点想必你也知道,至少为了面试也做过准备,今天通过本文给大家介绍下,感兴趣的朋友一起看看吧
    2020-10-10
  • Redis+拦截器实现接口防刷

    Redis+拦截器实现接口防刷

    接口防刷有很多种实现思路,例如:拦截器/AOP+Redis、拦截器/AOP+本地缓存、前端限制等等很多种实现思路,本文主要来讲一下 拦截器+Redis 的实现方式,需要的可以参考下
    2023-08-08
  • 基于Redis实现每日登录失败次数限制

    基于Redis实现每日登录失败次数限制

    这篇文章主要介绍了通过redis实现每日登录失败次数限制的问题,通过redis记录登录失败的次数,以用户的username为key,本文给出了实例代码,需要的朋友可以参考下
    2019-08-08
  • redis如何后台启动的方法

    redis如何后台启动的方法

    这篇文章主要介绍了redis如何后台启动的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Redis删除策略的三种方法及逐出算法

    Redis删除策略的三种方法及逐出算法

    这篇文章主要介绍了Redis删除策略的三种方法及逐出算法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • redis中List列表常见命令及使用场景

    redis中List列表常见命令及使用场景

    这篇文章主要给大家介绍了关于redis中List列表常见命令及使用场景的相关资料,Redis列表是简单的字符串列表,按照插入顺序排序,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Redis在项目中常见的12种使用场景示例和说明

    Redis在项目中常见的12种使用场景示例和说明

    Redis是一个开源的高性能键值对数据库,它以其内存中数据存储、键过期策略、持久化、事务、丰富的数据类型支持以及原子操作等特性,在许多项目中扮演着关键角色,以下是整理的12个Redis在项目中常见的使用场景举例说明和解释
    2024-06-06
  • Python交互Redis的实现

    Python交互Redis的实现

    本文主要介绍了Python交互Redis的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Redis报错:Could not create server TCP listening socket 127.0.0.1:6379: bind:解决方法

    Redis报错:Could not create server TCP 

    这篇文章主要介绍了Redis报错:Could not create server TCP listening socket 127.0.0.1:6379: bind:解决方法,是安装与启动Redis过程中比较常见的问题,需要的朋友可以参考下
    2023-06-06

最新评论