国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 旺苍县| 丰顺县| 襄樊市| 高碑店市| 洛阳市| 涿州市| 军事| 秦安县| 轮台县| 江川县| 美姑县| 樟树市| 江阴市| 扎赉特旗| 三明市| 广州市| 宝清县| 文山县| 措美县| 邵阳市| 璧山县| 宜春市| 绥棱县| 香格里拉县| 中山市| 赣州市| 蕉岭县| 东海县| 贡嘎县| 红桥区| 海兴县| 东乌| 余江县| 龙山县| 饶平县| 多伦县| 依兰县| 宁南县| 大石桥市| 金沙县| 滕州市|