json-lib出現(xiàn)There is a cycle in the hierarchy解決辦法
更新時(shí)間:2010年02月24日 19:17:41 作者:
如果需要解析的數(shù)據(jù)間存在級(jí)聯(lián)關(guān)系,而互相嵌套引用,在hibernate中極容易嵌套而拋出net.sf.json.JSONException: There is a cycle in the hierarchy異常。
解決辦法
1.設(shè)置JSON-LIB讓其過(guò)濾掉引起循環(huán)的字段。
Java代碼
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(false);
config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register
config.setExcludes(new String[]{//只要設(shè)置這個(gè)數(shù)組,指定過(guò)濾哪些字段。
"consignee",
"contract",
"coalInfo",
"coalType",
"startStation",
"balanceMan",
"endStation"
});
String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}";
out.print(tempStr);
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(false);
config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register
config.setExcludes(new String[]{//只要設(shè)置這個(gè)數(shù)組,指定過(guò)濾哪些字段。 "consignee", "contract", "coalInfo", "coalType", "startStation", "balanceMan", "endStation" }); String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}"; out.print(tempStr);
2.設(shè)置JSON-LIB的setCycleDetectionStrategy屬性讓其自己處理循環(huán),省事但是數(shù)據(jù)過(guò)于復(fù)雜的話會(huì)引起數(shù)據(jù)溢出或者效率低下。
Java代碼
[code]
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(false);
config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register
String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}";
out.print(tempStr);
1.設(shè)置JSON-LIB讓其過(guò)濾掉引起循環(huán)的字段。
Java代碼
復(fù)制代碼 代碼如下:
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(false);
config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register
config.setExcludes(new String[]{//只要設(shè)置這個(gè)數(shù)組,指定過(guò)濾哪些字段。
"consignee",
"contract",
"coalInfo",
"coalType",
"startStation",
"balanceMan",
"endStation"
});
String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}";
out.print(tempStr);
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(false);
config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register
config.setExcludes(new String[]{//只要設(shè)置這個(gè)數(shù)組,指定過(guò)濾哪些字段。 "consignee", "contract", "coalInfo", "coalType", "startStation", "balanceMan", "endStation" }); String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}"; out.print(tempStr);
2.設(shè)置JSON-LIB的setCycleDetectionStrategy屬性讓其自己處理循環(huán),省事但是數(shù)據(jù)過(guò)于復(fù)雜的話會(huì)引起數(shù)據(jù)溢出或者效率低下。
Java代碼
[code]
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(false);
config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register
String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}";
out.print(tempStr);
您可能感興趣的文章:
- 使用Ajax或Easyui等框架時(shí)的Json-lib的處理方案
- json-lib將json格式的字符串,轉(zhuǎn)化為java對(duì)象的實(shí)例
- Java 使用json-lib處理JSON詳解及實(shí)例代碼
- 將Java對(duì)象序列化成JSON和XML格式的實(shí)例
- java將XML文檔轉(zhuǎn)換成json格式數(shù)據(jù)的示例
- Java的微信開(kāi)發(fā)中使用XML格式和JSON格式數(shù)據(jù)的示例
- 解決使用json-lib包實(shí)現(xiàn)xml轉(zhuǎn)json時(shí)空值被轉(zhuǎn)為空中括號(hào)的問(wèn)題
相關(guān)文章
JSON 入門(mén)教程基礎(chǔ)篇 json入門(mén)學(xué)習(xí)筆記
剛開(kāi)始接觸json的時(shí)候感覺(jué)有點(diǎn)奇怪的命名,后來(lái)使用才發(fā)現(xiàn)這么簡(jiǎn)單而且用好用,擴(kuò)展性很強(qiáng),這里就為大家整理一下2020-09-09如何實(shí)現(xiàn)json數(shù)據(jù)可視化詳解
最近在工作中開(kāi)發(fā)一個(gè)內(nèi)部功能時(shí)碰到的一個(gè)需求,要把json數(shù)據(jù)在頁(yè)面上展示出來(lái),平時(shí)瀏覽器會(huì)安裝jsonView這樣的擴(kuò)展來(lái)看json數(shù)據(jù),但是程序要用到的話該怎么辦呢?今天在網(wǎng)上搜索的時(shí)候,發(fā)現(xiàn)了這個(gè)小技巧,分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧2016-11-11Ajax+Json 級(jí)聯(lián)菜單實(shí)現(xiàn)代碼
Ajax+Json 級(jí)聯(lián)菜單實(shí)現(xiàn)代碼,需要的朋友可以參考下。2009-10-10Javascript生成json的函數(shù)代碼(可以用php的json_decode解碼)
這幾天迷上了JSON,連項(xiàng)目中一些XML的工作都交給了JSON,話說(shuō)JSON真的比XML方便的多啊2012-06-06