最近线上遇到返回值问题,list转为json时候返回值中出现:$ref:"$.list.3.4.1[3]",发现这个问题是因为fastjson默认开启了“循环引用检测”,如果数据中出现对象嵌套的情况,就会出现上述问题。所以可以通过以下两种方式修正该问题:
1、直接修改代码,只需要在数据返回时,在代码强制关闭循环引用检测功能:
JSON.toJSONString(json, SerializerFeature.DisableCircularReferenceDetect) ;
2、修改配置文件,通过配置文件的修改不需要每个地方都需要通过代码显示关闭该特性:
<bean id="jsonConverter"
class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json;charset=UTF-8"/>
<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>