今天在写代码时发现请求取数时发现部分数据出现乱码现象,如图所示

实体类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>

结果如下: