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

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

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

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

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

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

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

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

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

  

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

  



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

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

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