2018-01-09spring boot 下循环引用引起转json时栈溢出问题

今天在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);
    }
}

  • WriteNullListAsEmpty :List字段如果为null,输出为[],而非null
  • WriteNullStringAsEmpty : 字符类型字段如果为null,输出为"",而非null
  • DisableCircularReferenceDetect :消除对同一对象循环引用的问题,默认为false(如果不配置有可能会进入死循环)
  • WriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,而非null
  • WriteMapNullValue:是否输出值为null的字段,默认为false。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,881评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,759评论 18 399
  • CloudJavaBackendSummaries1、开发环境eclipse工程,引入jw仓库的jw-base,3...
    燕京博士阅读 1,114评论 0 0
  • 曾经有段时间喜欢瑜伽,甚至有些走火入魔。那时候买了张会员卡,几乎每星期都会去练几次,每㳄练完人都觉得非常轻松。 原...
    RainbowPeng阅读 1,327评论 14 46
  • 望天 致伟大的八爷 长天北望 蔚蓝青光,白驹回眸 二十年天地逐梦 二十年青春壮志 竟难及一瞬 忆 东海深峡蛟龙 西...
    云中过阅读 195评论 0 0