国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

詳解在springmvc中解決FastJson循環(huán)引用的問題

2019-11-26 13:11:08
字體:
供稿:網(wǎng)友

我們先來看一個(gè)例子:

package com.elong.bms;  import java.io.OutputStream; import java.util.HashMap; import java.util.Map;  import com.alibaba.fastjson.JSON;  public class Test {  public static void main(String[] args) {  Map<String, Student> maps = new HashMap<String, Student>();  Student s1 = new Student("s1", 16);   maps.put("s1", s1);  maps.put("s2", s1);   byte[] bytes = JSON.toJSONBytes(maps);   System.out.println(new String(bytes));  } } 

輸出:

{"s1":{"age":16,"name":"s1"},"s2":{"$ref":"$.s1"}} 

可以看到,這個(gè)json如果發(fā)到前端是無法使用的,幸好FastJson提供了解決辦法,我們來看下,解決辦法為禁用循環(huán)引用檢測(cè),代碼如下:

package com.elong.bms;  import java.io.OutputStream; import java.util.HashMap; import java.util.Map;  import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature;  public class Test {  public static void main(String[] args) {  Map<String, Student> maps = new HashMap<String, Student>();  Student s1 = new Student("s1", 16);   maps.put("s1", s1);  maps.put("s2", s1);    SerializerFeature feature = SerializerFeature.DisableCircularReferenceDetect;   byte[] bytes = JSON.toJSONBytes(maps,feature);   System.out.println(new String(bytes));  } } 

輸出如下:

{"s1":{"age":16,"name":"s1"},"s2":{"age":16,"name":"s1"}} 

問題是如果我們?cè)趕pring mvc中使用的時(shí)候,需要將SerializerFeature注入到MessageConverter里面, FastJsonHttpMessageConverter

但是SerializerFeature是一個(gè)enum類型的,又是一個(gè)array,考慮到大部分人對(duì)這個(gè)不熟悉,直接上代碼了。

<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.FieldRetrievingFactoryBean">   <property name="staticField" value="com.alibaba.fastjson.serializer.SerializerFeature.DisableCircularReferenceDetect"></property>  </bean> 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 周宁县| 永年县| 濮阳市| 晋州市| 瑞金市| 内丘县| 昭平县| 平罗县| 娄烦县| 保德县| 河间市| 肥乡县| 宜昌市| 阿拉善盟| 托里县| 崇左市| 灌南县| 永年县| 舞钢市| 河西区| 原阳县| 安顺市| 婺源县| 额济纳旗| 定南县| 鹿邑县| 常德市| 宁强县| 共和县| 固原市| 蓝山县| 手机| 永靖县| 灵台县| 隆安县| 临江市| 阳新县| 乌拉特后旗| 双桥区| 莲花县| 鄂托克旗|