更新時間:2018年11月27日14時40分 來源:傳智播客 瀏覽次數(shù):
在前幾天的時候,我使用fastjson的時候,發(fā)現(xiàn)一個問題,就是如果一個集合里面添加相同的一個對象,然后將集合轉化為對應的json字符串,發(fā)送到頁面去解析的時候,發(fā)現(xiàn)只能夠讀出第一個對象,后面的對象就讀不出來,頁面上顯示的代碼:
從頁面圖片我們可以看到,添加了重復的seller之后,只有第一個可以正常顯示,后面的都是顯示為$ref:"$.rows[0].seller",出現(xiàn)這種現(xiàn)象的原因是fastjson開啟了fastjson的“循環(huán)引用檢測”機制,這種機制會讓fastjson在對于將Java對象轉化為對應的json對象的時候,同一個對象的使用,下面的對象都改為了對前面對象的應用,所以,這就是我們?yōu)槭裁纯吹?quot;$.rows[0].seller"這個東西的原因,那么,我們只要講這種“循環(huán)引用檢測”機制關掉即可
如果是直接使用fastjson的話,可以這樣關掉:
在將對象轉化為json的時候,添加這個:SerializerFeature.DisableCircularReferenceDetect
SerializerFeature.DisableCircularReferenceDetect:關閉fastjson的循環(huán)引用檢測,例如:
如果是是使用了spring+springmvc的方式的話,可以添加
首發(fā):http://java.itcast.cn