去掉redis反序列化之后包含的@class部分
一,使用 SerializeFilter
过滤掉 @class
字段(服务器端)
import com.alibaba.fastjson.serializer.NameFilter;
import java.util.Map;
public class RemoveClassFilter implements NameFilter {
@Override
public String process(Object object, String name, Object value) {
if ("@class".equals(name)) {
return null; // 返回 null 表示忽略该字段
}
return name;
}
}
二,在 FastJsonConfig
中应用这个过滤器:
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import java.util.List;
@Configuration
public class WebConfig {
@Bean
public HttpMessageConverter<?> fastJsonHttpMessageConverter() {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
// 添加自定义的 SerializeFilter
config.setSerializeFilters(new RemoveClassFilter());
// 禁用自动类型检测
config.getParserConfig().setAutoTypeSupport(false);
converter.setFastJsonConfig(config);
return converter;
}
// 如果你想覆盖默认的消息转换器,可以这样做:
/*
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(fastJsonHttpMessageConverter());
}
*/
}
原文地址:https://blog.csdn.net/2203_75546225/article/details/144249498
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!