解析json對象出現$ref: "$.list[0]"的解決辦法

問題描述:
今天在做後臺傳數據到前端解析的時候遇到了這個問題。背景介紹下:後臺傳過去json數據是用阿里的fastjson轉換的,調用的是這個方法

String s = JSON.toJSONStringWithDateFormat(Object, dateformat, SerializerFeature.WriteDateUseDateFormat);
ServletActionContext.getResponse().getWriter().write(s);


其中dataformat是格式化時間數據的。傳過去的是一個PageBean對象,該對象繼承了Page對象,Page裏面包含list,pageNo,pageSize。前臺在通過data.list準備取出list循環做點事情的時候,發現全是undefined,通過console.log(data.list),發現這個數據竟然是這個東西$ref: "$.list[0]"。百度搜了下,這裏就是循環引用造成的。


問題分析:
循環引用:當一個對象包含另一個對象時,fastjson就會把該對象解析成引用。引用是通過$ref標示的,下面介紹一些引用的描述
"$ref":".." 上一級
"$ref":"@" 當前對象,也就是自引用
"$ref":"$" 根對象
"$ref":"$.children.0" 基於路徑的引用,相當於 root.getChildren().get(0)


解決方案:
fastjson提供了多種json轉換方案,有興趣的同學可以自己看看源碼,這裏我們可以採用禁止循環引用的方案:

String s = JSON.toJSONStringWithDateFormat(Object, "yyyy-MM-dd HH:mm:ss", SerializerFeature.DisableCircularReferenceDetect);

 

轉自:https://blog.csdn.net/u013185616/article/details/52799166

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章