今天在写代码时发现请求取数时发现部分数据出现乱码现象,如图所示
实体类A
public class BaseItems{
private Integer id;
//其他属性省略
private Set<BasePolicy> policys;
}
实体类B
public class BasePolicy implements java.io.Serializable {
private Long id;
private String grade; //文件等级
private String title;//标题
private String fileno; //文号
private String dispatchDep; //发文单位
//其他属性省略
}
AB的关系是一对多的关系 ,在查询a数据时会把关联的b的数据一块查询出来
问题原因: 在对list数据json序列化时出现循环引用问题,简单说,循环引用就是集合/对象中的多个元素/属性存在相互引用导致循环。
解决方案:在spring配置文件中加入如下代码即可解决
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json</value>
<value>application/xml;charset=UTF-8</value>
</list>
</property>
<property name="features">
<array>
<value>DisableCircularReferenceDetect</value>
</array>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 解决使用fastJson中出现$ref问题(引用) -->
<!-- jQuery这个前端技术无法解析该引用 -->
<!-- 禁用循环引用检测 -->
<bean id="DisableCircularReferenceDetect"
class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="staticField"
value="com.alibaba.fastjson.serializer.SerializerFeature.DisableCircularReferenceDetect">
</property>
</bean>
结果如下:
发表回复