首页 > Web开发 > 详细

FastJson序列化对象出现$ref循环检测问题

时间:2021-01-25 20:02:07      阅读:32      评论:0      收藏:0      [点我收藏+]

问题描述

对象中有自己类型的成员变量,为了解决json序列化的循环引用问题的(循环引用即A中包含B,B中又包含了A,这样在序列化你过程中会进入死循环),所以在出现该情况。

多级菜单pojo

  public class Menu implements Serializable{
      private Integer id;
      private String name; // 菜单名称
      private String linkUrl; // 访问路径
      private String path;//菜单项所对应的路由路径
      private Integer priority; // 优先级(用于排序)
      private String description; // 描述
      private String icon;//图标
      private Set<Role> roles = new HashSet<Role>(0);//角色集合
      private List<Menu> children = new ArrayList<>();//子菜单集合      <== 子菜单序列化失败
      private Integer parentMenuId;//父菜单id
      private Integer roleId;//对应角色id
      private Integer level;
  }

修改fastjson配置

添加配置DisableCircularReferenceDetect

  <mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <!--不需要视图解析器,项目中的所有的请求都返回json数据结构-->
        <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
            <property name="supportedMediaTypes" value="application/json"/>
            <property name="features">
                <list>
                    <!--Map类型格式化,接收参数允许空值-->
                     <value>WriteMapNullValue</value>

                    <!-- 字段如果为null,输出为"",而非null -->
                    <!-- <value>WriteNullStringAsEmpty</value>-->

                    <!--日期类型格式化  数值15..... 毫秒级的时间戳
                    WriteDateUseDateFormat yyyy-MM-dd hh:mm:ss-->
                    <value>WriteDateUseDateFormat</value>

                    <!--使用该配置的时候,要注意是否存在循环依赖的情况。-->
                    <value>DisableCircularReferenceDetect</value>
                </list>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

FastJson序列化对象出现$ref循环检测问题

原文:https://www.cnblogs.com/bdsbdg/p/14326823.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!