json-lib出现There is a cycle in the hierarchy解决办法

 更新时间:2010年02月24日 19:17:41   作者:  
如果需要解析的数据间存在级联关系,而互相嵌套引用,在hibernate中极容易嵌套而抛出net.sf.json.JSONException: There is a cycle in the hierarchy异常。
解决办法

1.设置JSON-LIB让其过滤掉引起循环的字段。

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[]{//只要设置这个数组,指定过滤哪些字段。
"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[]{//只要设置这个数组,指定过滤哪些字段。 "consignee", "contract", "coalInfo", "coalType", "startStation", "balanceMan", "endStation" }); String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}"; out.print(tempStr);

2.设置JSON-LIB的setCycleDetectionStrategy属性让其自己处理循环,省事但是数据过于复杂的话会引起数据溢出或者效率低下。
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);

相关文章

  • XENON基于JSON变种

    XENON基于JSON变种

    JSON已经成为了现在互联网上轻量级数据传输的事实标准,现在已经很少听说哪个流行的web API不支持JSON了,而很多内部或者专用的应用程序也都在使用JSON来传递数据。
    2010-07-07
  • json简单介绍

    json简单介绍

    我们知道AJAX技术能够使得每一次请求更加迅捷,对于每一次请求返回的不是整个页面,也仅仅是所需要返回的数据。
    2008-06-06
  • Javascript Jquery 遍历Json的实现代码

    Javascript Jquery 遍历Json的实现代码

    Javascript Jquery 遍历Json的实现代码,需要的朋友可以参考下。
    2010-03-03
  • ASP Json Parser修正版

    ASP Json Parser修正版

    之前因为要用json,在网上,json Generator就不少,但是,parser鲜有后来,在一个老外的启发下,写了一个praser,其实超简单,就是利用了JS的eval来parse,然后,把对象再返回给vbscript代码。
    2009-12-12
  • 一文了解什么是JWT

    一文了解什么是JWT

    JSON WEB Token是一种基于JSON的、用于在网络上声明某种主张的令牌,由三部分组成: 头信息, 消息体和签名,下面就一起来了解一下什么是JWT
    2023-05-05
  • js解析与序列化json数据(一)json.stringify()的基本用法

    js解析与序列化json数据(一)json.stringify()的基本用法

    对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript
    2013-02-02
  • JSONP之我见

    JSONP之我见

    本文主要向大家介绍了个人对于jsonp的理解,jsonp的概念,跨域问题,以及jsonp与XMLHttpRequest的区别,由于本人也是javascript的初学者,难免会有些不当之处,还请指正,谢谢。
    2015-03-03
  • js操作两个json数组合并、去重,以及删除某一项元素

    js操作两个json数组合并、去重,以及删除某一项元素

    这篇文章主要介绍了js操作两个json数组合并、去重,以及删除某一项元素,需要的朋友可以参考下
    2020-09-09
  • 使用Json比用string返回数据更友好,也更面向对象一些

    使用Json比用string返回数据更友好,也更面向对象一些

    在面向对象的程序来讲,它的可能性,编写代码不易出错率也很重要,所以,建议在返回复杂字条符时,使用C#提供的Json,而不需要自己去拼写JS返回的Json格式。
    2011-09-09
  • JSON与XML优缺点对比分析

    JSON与XML优缺点对比分析

    本文从各个方面向大家对比展示了json和xml的优缺点,十分的全面细致,有需要的小伙伴可以参考下。
    2015-07-07

最新评论