最近线上遇到返回值问题,list转为json时候返回值中出现:$ref:"$.list.3.4.1[3]",发现这个问题是由于fastjson默认开启了“循环引用检测”,若是数据中出现对象嵌套的状况,就会出现上述问题。因此能够经过如下两种方式修正该问题:spring
一、直接修改代码,只须要在数据返回时,在代码强制关闭循环引用检测功能:json
JSON.toJSONString(json, SerializerFeature.DisableCircularReferenceDetect) ;app
二、修改配置文件,经过配置文件的修改不须要每一个地方都须要经过代码显示关闭该特性:对象
<bean id="jsonConverter" io
class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> ast
<property name="supportedMediaTypes" value="application/json;charset=UTF-8"/> class
<property name="features"> 配置
<array value-type="com.alibaba.fastjson.serializer.SerializerFeature"> 循环
<value>DisableCircularReferenceDetect</value> 引用
</array>
</property>
</bean>
<bean id="DisableCircularReferenceDetect"
class="org.springframework.beans.factory.config.Fiel dRetrievingFactoryBean">
<property name="staticField"
value="com.alibaba.fastjson.serializer.SerializerFeature.DisableCircularReferenceDetect">
</property>
</bean>