问题描述
对象中有自己类型的成员变量,为了解决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>