class com.alibaba.fastjson.JSONObject cannot be cast to class
在做接口测试的时候,携带一个可用的token,打算debug看看代码的执行过程,由于Redis配置类的不完整导致报错
这是原本的Redis配置类
@Configuration
public class RedisConfig {@Bean@SuppressWarnings(value = {"unchecked", "rawtypes"})public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {// 创建RedisTemplate实例RedisTemplate<Object, Object> template = new RedisTemplate<>();// 设置Redis连接工厂template.setConnectionFactory(connectionFactory);// 创建FastJsonRedisSerializer实例,用于序列化和反序列化Redis中的值FastJsonRedisSerializer serializer = new FastJsonRedisSerializer(Object.class);// 使用StringRedisSerializer来序列化和反序列化Redis的key值template.setKeySerializer(new StringRedisSerializer());// 设置值的序列化器为FastJsonRedisSerializertemplate.setValueSerializer(serializer);// 设置Hash的key的序列化器为StringRedisSerializertemplate.setHashKeySerializer(new StringRedisSerializer());// 设置Hash的值的序列化器为FastJsonRedisSerializertemplate.setHashValueSerializer(serializer);// 初始化RedisTemplate的属性template.afterPropertiesSet();// 返回配置好的RedisTemplate实例return template;}}
在一番捣鼓后,配置类依旧有问题,期间怀疑过fastJson的版本问题等,最后确定为配置类问题,后面抄了一位老哥的配置类: 老哥链接结合Ai修改了一下为如下版本
pom.xml
<--> 版本不要太老,不然找不到 GenericFastJsonRedisSerializer.class </-->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.51</version>
</dependency>
RedisConfig.class
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {// 使用 GenericFastJsonRedisSerializer 确保正确反序列化GenericFastJsonRedisSerializer fastJsonRedisSerializer = new GenericFastJsonRedisSerializer();// 配置 FastJSON 安全设置ParserConfig.getGlobalInstance().setAutoTypeSupport(false); // 禁用 AutoTypeParserConfig.getGlobalInstance().addAccept("com.wdw.securitytoken.LoginUser"); // 白名单// 配置 RedisTemplateRedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(lettuceConnectionFactory);// 序列化器RedisSerializer<String> stringSerializer = new StringRedisSerializer();redisTemplate.setKeySerializer(stringSerializer); // Key 序列化redisTemplate.setValueSerializer(fastJsonRedisSerializer); // Value 序列化redisTemplate.setHashKeySerializer(stringSerializer); // Hash Key 序列化redisTemplate.setHashValueSerializer(fastJsonRedisSerializer); // Hash Value 序列化redisTemplate.afterPropertiesSet();return redisTemplate;}}
运行结果