最近線上遇到返回值問題,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>