org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Unrecognized field

原因:对象中如果有setXXXgetXXX方法,或返回值为BooleanbooleanisXXX方法,但没有对应的XXX字段,使用Jackson2JsonRedisSerializer序列化后json中会有对应的key值XXX,从而会导致反序列化失败。

解决办法:在类加上注解@JsonIgnoreProperties(ignoreUnknown = true)忽略实体中没有对应的json的key值,或者在set、get或is开头的方法上加上@JsonIgnore注解。

代码定位:(第一次序列化时调用,后续从缓存中取)
DefaultValueOperations 235 set
AbstractOperations 127 rawValue
org.springframework.data.redis.serilizer.Jackson2JsonRedisSerializer 86 serilizer
com.fasterxml.jackson.databind.ObjectMapper 3428 writeValueAsBytes
ObjectMapper 4094 _configAndWriteValue
DefaultSerializerProvider 308 serializeValue
SerializerProvider 713 findTypedValueSerializer
SerializerProvider 510 findValueSerializer
SerializerProvider 1336 _createAndCacheUntypedSerializer 此处将序列化器加入缓存
SerializerProvider 1388 _createUntypedSerializer
BeanSerializerFactory 165 createSerializer
BeanSerializerFactory 216 _createSerializer2
BasicSerializerFactory 346 findSerializerByAnnotations
BasicBeanDescription findJsonValueAccessor 252
POJOPropertiesCollector getJsonValueAccessor 196
POJOPropertiesCollector collectAll() 309
POJOPropertiesCollector _addMethods 533
POJOPropertiesCollector _addGetterMethod 583、586
BeanUtil okNameForRegularGetter 38
BeanUtil okNameForIsGetter 69

GitHub 加速计划 / js / json
18
5
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:3 个月前 )
2134cb94 * change NLOHMANN_JSON_FROM_WITH_DEFAULT to let NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT work with an empty JSON instance * fix ci_static_analysis_clang (ci_clang_tidy) * change NLOHMANN_JSON_FROM_WITH_DEFAULT to let NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT work with an empty JSON instance 12 天前
6057b31d * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * Use ubuntu-latest image to run Valgrind (#4575) * :wrench: use Clang image to run valgrind * :wrench: use Clang image to run valgrind * :wrench: use Clang image to run valgrind * :wrench: use Ubuntu image to run valgrind * Use Clang image to run iwyu (#4574) * :wrench: use Clang image to run iwyu * :wrench: use Clang image to run iwyu * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :art: format code * :hammer: clean up 14 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐