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开头的方法容易误导序列化工具。

总结

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

相关文章

  • Centos7下Redis3.2.8最新版本安装教程

    Centos7下Redis3.2.8最新版本安装教程

    这篇文章主要为大家详细介绍了Centos7下Redis3.2.8最新版本的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • redis中5种数据基础查询命令

    redis中5种数据基础查询命令

    本文主要介绍了redis中5种数据基础查询命令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Redis抢单预热的实现示例

    Redis抢单预热的实现示例

    本文主要介绍了Redis抢单预热的实现示例,以应对抢单活动带来的高并发访问压力,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • Win10下 Redis启动 错误1067导致进程意外终止的解决方法

    Win10下 Redis启动 错误1067导致进程意外终止的解决方法

    这篇文章主要介绍了Win10下 Redis启动 错误1067导致进程意外终止的完美解决方案,需要的朋友可以参考下
    2018-01-01
  • Redis的数据淘汰策略使用及注意事项

    Redis的数据淘汰策略使用及注意事项

    Redis的数据淘汰策略是指在内存不足时,如何决定哪些数据需要被淘汰以释放内存空间,Redis提供了多种数据淘汰策略,如noeviction、allkeys-lru、allkeys-lfu、volatile-lru、volatile-lfu、volatile-random、allkeys-random和volatile-ttl
    2025-12-12
  • Redis实现库存扣减的解决方案防止商品超卖

    Redis实现库存扣减的解决方案防止商品超卖

    在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等,基于redis实现扣减库存的具体实现,初始化库存回调函数(IStockCallback)扣减库存服务(StockService),感兴趣的朋友跟随小编一起看看吧
    2022-06-06
  • Redis删除缓存失败的原因和解决方案

    Redis删除缓存失败的原因和解决方案

    本文讨论了数据库操作成功但缓存删除失败时,线上环境下的应对策略,提出了一种更稳定的方法,包括主流程写库后再删除缓存、删除失败进入重试队列、超过重试上限进入死信队列并触发告警和补偿等措施,需要的朋友可以参考下
    2026-04-04
  • Redis中的有序集合zset从使用到原理分析

    Redis中的有序集合zset从使用到原理分析

    Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占用可控,需注意成员大小优化及大集合分片处理
    2025-09-09
  • Redis中5种BitMap应用场景及实现介绍

    Redis中5种BitMap应用场景及实现介绍

    Redis BitMap是一种高效的位操作数据结构,这种结构在处理海量数据的布尔型状态时尤其高效,下面小编就来和大家简单介绍一下5种它的应用场景及实现方法吧
    2025-04-04
  • Rocky9部署redis的实现示例

    Rocky9部署redis的实现示例

    本文主要介绍了Rocky9部署redis的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06

最新评论