教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

FastJson中“$ref 循環(huán)引用”的問題

更新時(shí)間:2018年11月27日14時(shí)40分 來源:傳智播客 瀏覽次數(shù):

  在前幾天的時(shí)候,我使用fastjson的時(shí)候,發(fā)現(xiàn)一個(gè)問題,就是如果一個(gè)集合里面添加相同的一個(gè)對象,然后將集合轉(zhuǎn)化為對應(yīng)的json字符串,發(fā)送到頁面去解析的時(shí)候,發(fā)現(xiàn)只能夠讀出第一個(gè)對象,后面的對象就讀不出來,頁面上顯示的代碼:

  從頁面圖片我們可以看到,添加了重復(fù)的seller之后,只有第一個(gè)可以正常顯示,后面的都是顯示為$ref:"$.rows[0].seller",出現(xiàn)這種現(xiàn)象的原因是fastjson開啟了fastjson的“循環(huán)引用檢測”機(jī)制,這種機(jī)制會(huì)讓fastjson在對于將Java對象轉(zhuǎn)化為對應(yīng)的json對象的時(shí)候,同一個(gè)對象的使用,下面的對象都改為了對前面對象的應(yīng)用,所以,這就是我們?yōu)槭裁纯吹?quot;$.rows[0].seller"這個(gè)東西的原因,那么,我們只要講這種“循環(huán)引用檢測”機(jī)制關(guān)掉即可

  如果是直接使用fastjson的話,可以這樣關(guān)掉:

  在將對象轉(zhuǎn)化為json的時(shí)候,添加這個(gè):SerializerFeature.DisableCircularReferenceDetect

  SerializerFeature.DisableCircularReferenceDetect:關(guān)閉fastjson的循環(huán)引用檢測,例如:

  

  如果是是使用了spring+springmvc的方式的話,可以添加

  



作者:傳智播客JavaEE培訓(xùn)學(xué)院

首發(fā):http://java.itcast.cn

0 分享到:
和我們在線交談!