org.springframework.data.redis.serializer.SerializationException: Could not Read JSON

SpringBoot项目在获取Redis中的数据时候报错:

org.springframework.data.redis.serializer.SerializationException: Could not Read JSON
报错信息
如上图为具体报错,很清楚无法读取JSON
问题排查过程:

  1. 打开断点 调用方法查看相关参数是否正常
  2. 查看yml中的redis配置
  3. 查看RedisConfig文件(问题出现在这个文件里)

RedisConfig文件是用来配置 redisTemplate

图上问题有两种解决办法:
  1. 使用StringRedisTemplate(大家可以去了解一下,我没有使用这种方式)
  2. 第二种方式就是修改序列化方式
 RedisTemplate<String, T> template = new RedisTemplate<>();

        // 配置连接工厂
        template.setConnectionFactory(factory);

        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
        Jackson2JsonRedisSerializer<Object> jacksonSerializer = new Jackson2JsonRedisSerializer<>(Object.class);

        ObjectMapper om = new ObjectMapper();
        // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
        jacksonSerializer.setObjectMapper(om);

        // 值采用json序列化  **在这里修改呀!!!!!!**
        // 原本:template.setValueSerializer(jacksonSerializer);
        template.setValueSerializer(new StringRedisSerializer());
//        template.setValueSerializer(jacksonSerializer);
        // 使用StringRedisSerializer来序列化和反序列化redis的key值
        template.setKeySerializer(new StringRedisSerializer());

        // 设置hash key 和value序列化模式
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(jacksonSerializer);
        template.afterPropertiesSet();

        log.info("RedisTemplateConfig init end");
        return template;

以上便是解决办法。
每天进步一点点! 加油

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

San Jin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值