
jackson redis序列化器中启用use_long_for_ints无响应
尽管启用了jackson的use_long_for_ints配置,但整数值仍被反序列化为integer,而不是long。
原因分析
源码显示,反序列化过程调用了untypedobjectdeserializer函数,它未检查use_long_for_ints选项,而是仅检查use_big_integer_for_ints。
uBrand
一站式AI品牌创建平台,在线品牌设计,AI品牌策划,智能品牌营销;uBrand帮助创业者轻松打造个性品牌!
下载
解决方案
您可以创建自定义反序列化器,在反序列化时将整数值转换为long:
public class customdeserializer extends jsondeserializer
然后将自定义反序列化器添加到jackson配置中:
@Bean
@SuppressWarnings("all")
public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new SimpleModule().addDeserializer(Object.class, new CustomDeserializer()));
Jackson2JsonRedisSerializer