2018-01-09spring boot 下循环引用引起转js

2018-01-09  本文已影响0人  624c95384278

今天在spring boot下用spring data jpa配置好映射关系后发现查询没问题,但是转json返回给浏览器就会报栈溢出。

image.png

这是因为对象中的循环引用引起不断递归
我选择了切换json转换器为fastjson,fastjson默认支持消除对同一对象循环引用
但是切换后会出现中文乱码,下面附上fastjson配置方法与乱码解决方法。

@Configuration
public class FastJsonConfiguration extends WebMvcConfigurerAdapter {
    /**
     * 修改自定义消息转换器
     *
     * @param converters 消息转换器列表
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        System.out.println("fastjson配置读取");
        //调用父类的配置
        super.configureMessageConverters(converters);
        //创建fastJson消息转换器
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        //创建配置类
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        //修改配置返回内容的过滤
        fastJsonConfig.setSerializerFeatures(
//                SerializerFeature.DisableCircularReferenceDetect,
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullStringAsEmpty
        );
        fastConverter.setFastJsonConfig(fastJsonConfig);
        //处理中文乱码问题
        List<MediaType> fastMediaTypes = new ArrayList<>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        fastConverter.setSupportedMediaTypes(fastMediaTypes);
        converters.add(fastConverter);
        //将fastjson添加到视图消息转换器列表内
        converters.add(fastConverter);
    }
}

上一篇 下一篇

猜你喜欢

热点阅读