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 Brpop 命令作用详解

    Redis Brpop 命令作用详解

    BRPOP 是一个阻塞的列表弹出原语,该命令会按照给出的 key 顺序查看 list,并在找到的第一个非空 list 的尾部弹出一个元素,今天通过本文给大家介绍Redis Brpop 命令相关知识,感兴趣的朋友一起看看吧
    2023-07-07
  • redis zrange 与 zrangebyscore的区别解析

    redis zrange 与 zrangebyscore的区别解析

    这篇文章主要介绍了redis zrange与zrangebyscore的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 浅谈Redis高并发缓存架构性能优化实战

    浅谈Redis高并发缓存架构性能优化实战

    本文主要介绍了浅谈Redis高并发缓存架构性能优化实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Redis实现优惠券限一单限制详解

    Redis实现优惠券限一单限制详解

    这篇文章主要介绍了Redis解决优惠券秒杀应用案例,本文先讲了抢购问题,指出其中会出现的多线程问题,提出解决方案采用悲观锁和乐观锁两种方式进行实现,然后发现在抢购过程中容易出现一人多单现象,需要的朋友可以参考下
    2022-12-12
  • 几分钟教你掌握Redis简单动态字符串SDS

    几分钟教你掌握Redis简单动态字符串SDS

    这篇文章主要为大家介绍了几分钟教你掌握Redis简单动态字符串SDS方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 基于Redis实现分布式单号及分布式ID(自定义规则生成)

    基于Redis实现分布式单号及分布式ID(自定义规则生成)

    一些业务背景下,业务要求单号需要有区分不同的前缀,那么在分布式的架构下如何自定义单号而且还能保证唯一呢?本文就来详细的介绍一下
    2021-09-09
  • Redis中秒杀场景下超时与超卖问题的解决方案

    Redis中秒杀场景下超时与超卖问题的解决方案

    当我们在linux中使用ab来模拟高并发秒杀时可能会遇到两种问题,“超时和超卖”,本文就详细介绍了Redis中秒杀场景下超时与超卖问题的解决方案,感兴趣的可以了解一下
    2022-05-05
  • redis-cli登录远程redis服务并批量导入数据

    redis-cli登录远程redis服务并批量导入数据

    本文主要介绍了redis-cli登录远程redis服务并批量导入数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • Redis教程(六):Sorted-Sets数据类型

    Redis教程(六):Sorted-Sets数据类型

    这篇文章主要介绍了Redis教程(六):Sorted-Sets数据类型,本文讲解了Sorted-Sets数据类型概述、相关命令列表、命令使用示例、应用范围等内容,需要的朋友可以参考下
    2015-04-04
  • mac下redis安装、设置、启动停止方法详解

    mac下redis安装、设置、启动停止方法详解

    这篇文章主要介绍了mac下redis安装、设置、启动停止方法详解,需要的朋友可以参考下
    2020-02-02

最新评论