亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2017年01月23日 15:25:38   作者:asialee  
本篇文章主要介紹了在springmvc中解決FastJson循環(huán)引用的問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

我們先來看一個(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)引用檢測,代碼如下:

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"}} 

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

但是SerializerFeature是一個(gè)enum類型的,又是一個(gè)array,考慮到大部分人對這個(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> 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解使用JavaCV/OpenCV抓取并存儲攝像頭圖像

    詳解使用JavaCV/OpenCV抓取并存儲攝像頭圖像

    本篇文章主要介紹了使用JavaCV/OpenCV抓取并存儲攝像頭圖像,實(shí)例分析了使用JavaCV/OpenCV抓取并存儲攝像頭圖像的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-04-04
  • Java深入講解AWT實(shí)現(xiàn)事件處理流程

    Java深入講解AWT實(shí)現(xiàn)事件處理流程

    AWT的事件處理是一種委派式事件處理方式:普通組件(事件源)將整個(gè)事件處理委托給特定的對象(事件監(jiān)聽器);當(dāng)該事件源發(fā)生指定的事件時(shí),就通知所委托的事件監(jiān)聽器,由事件監(jiān)聽器來處理這個(gè)事件
    2022-04-04
  • 詳解Java設(shè)計(jì)模式編程中的里氏替換原則

    詳解Java設(shè)計(jì)模式編程中的里氏替換原則

    這篇文章主要介紹了Java設(shè)計(jì)模式編程中的里氏替換原則,有這個(gè)名字是因?yàn)檫@是由麻省理工學(xué)院的一位姓里的女士Barbara Liskov提出來的(嗯...),需要的朋友可以參考下
    2016-02-02
  • PageHelper在springboot+mybatis框架中的使用步驟及原理解析

    PageHelper在springboot+mybatis框架中的使用步驟及原理解析

    這篇文章主要介紹了PageHelper在springboot+mybatis框架中的使用步驟及原理解析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Java 詳細(xì)講解分治算法如何實(shí)現(xiàn)歸并排序

    Java 詳細(xì)講解分治算法如何實(shí)現(xiàn)歸并排序

    分治算法的基本思想是將一個(gè)規(guī)模為N的問題分解為K個(gè)規(guī)模較小的子問題,這些子問題相互獨(dú)立且與原問題性質(zhì)相同。求出子問題的解,就可得到原問題的解,本篇文章我們就用分治算法來實(shí)現(xiàn)歸并排序
    2022-04-04
  • springboot+springmvc實(shí)現(xiàn)登錄攔截

    springboot+springmvc實(shí)現(xiàn)登錄攔截

    這篇文章主要介紹了springboot+springmvc實(shí)現(xiàn)登錄攔截,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java字符串求并集的方法

    java字符串求并集的方法

    這篇文章主要介紹了java字符串求并集的方法,涉及Java字符串操作中union方法的使用,是Java字符串操作中非常實(shí)用的基本技巧,需要的朋友可以參考下
    2014-11-11
  • RocketMQ消息發(fā)送與消息類別詳解

    RocketMQ消息發(fā)送與消息類別詳解

    這篇文章主要介紹了RocketMQ消息發(fā)送與消息類別詳解,事務(wù)消息的生產(chǎn)者執(zhí)行本地事務(wù),并根據(jù)事務(wù)執(zhí)行的結(jié)果選擇是否提交或回滾事務(wù),
    如果事務(wù)執(zhí)行成功并選擇提交事務(wù),則產(chǎn)生注冊成功消息,進(jìn)入下一步,需要的朋友可以參考下
    2023-09-09
  • IDEA開啟Run Dashboard的幾種方式

    IDEA開啟Run Dashboard的幾種方式

    Run Dashboard 是 IntelliJ IDEA 中的一個(gè)工具窗口,用于管理和監(jiān)視項(xiàng)目中正在運(yùn)行的應(yīng)用程序和配置,它提供了一種集中管理運(yùn)行和調(diào)試過程的方式,本文給大家介紹了IDEA開啟Run Dashboard的幾種方式,需要的朋友可以參考下
    2024-03-03
  • mybatis in查詢傳入String方式

    mybatis in查詢傳入String方式

    這篇文章主要介紹了mybatis in查詢傳入String方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論