`
JavaCrazyer
  • 浏览: 3009000 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

JSON处理Hibernate实体类net.sf.json.JSONException: There is a cycle in the hierarchy异常

阅读更多

由于Hibernate中好多实体类都级联关系,也就是某个类,出现了别的类的引用对象充当属性。那么这样的话用JSON来进行处理会出现嵌套的异常:net.sf.json.JSONException: There is a cycle in the hierarchy异常。

在处理这个错误之前先看看普通的JSON处理数据示例

TProcessInfoDAO dao = new TProcessInfoDAO();
   List<TProcessInfo> orgData = dao.findAll();
   JSONArray array=JSONArray.fromObject(orgData);
   String json=array.toString();
   System.out.println(json);

 

   这样的处理方式中要求TProcessInfoDAO类所有属性必须是普通属性,不包含引用按对象

如果包含引用对象一般需要做一下配置过滤引用属性,这样JSON处理就能通过:这种是不会输出引用对象的

TProcessInfoDAO dao = new TProcessInfoDAO();
   List<TProcessInfo> orgData = dao.findAll();
   JsonConfig config = new JsonConfig();
   config.setJsonPropertyFilter(new PropertyFilter() {
   public boolean apply(Object source, String name, Object value) {
   //配置你可能出现递归的属性
   if (name.equals("TProcessInfos") || name.equals("TProcessInfo")) {
   return true;
   } else {
   return false;
   }
   }
   });
  
   //调用ExtHelper将你的JSONConfig传递过去
   JSONArray JsonArr=JSONArray.fromObject(orgData, config);
   String jsonstr=JsonArr.toString();

 还有一种处理方式,这种会输出引用对象

设置JSON-LIB的setCycleDetectionStrategy属性让其自己处理循环,省事但是数据过于复杂的话会引起数据溢出或者效率低下。

 

TProcessInfoDAO dao = new TProcessInfoDAO();
		 List<TProcessInfo> orgData = dao.findAll();
		JsonConfig config = new JsonConfig();    
		 config.setIgnoreDefaultExcludes(false);       
		 config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
		 //调用ExtHelper将你的JSONConfig传递过去
		 JSONArray JsonArr=JSONArray.fromObject(orgData, config);
		 String jsonstr=JsonArr.toString();
		 System.out.println(jsonstr);

 

3
2
分享到:
评论

相关推荐

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

    如果需要解析的数据间存在级联关系,而互相嵌套引用,在hibernate中极容易嵌套而抛出net.sf.json.JSONException: There is a cycle in the hierarchy异常。

    net.sf.json.JSONObject相关jar包.zip

    6. **错误处理**:在处理JSON时,需要捕获JSONException,这是一个在解析、序列化或验证JSON时可能会抛出的异常。 7. **与其他数据类型转换**:JSONObject支持与Java基本类型、集合、Map等之间的转换,提供便利的...

    用于java对象与json对象间的相互转换(net.sf.json.JSONObject)

    - **异常处理**:在转换过程中,可能会遇到JSON格式错误、字段不匹配等问题,应捕获并处理`JSONException`。 以上就是使用`net.sf.json.JSONObject`进行JSON操作的基本步骤和进阶技巧。在实际开发中,你可能还需要...

    JSONException:com.alibaba.fastjson.JSONException: expect ‘:’ at 0, actual = 已解决

    在编程过程中,我们可能会遇到各种异常,其中"JSONException: expect ‘:’ at 0, actual =" 是一个典型的Fastjson库在解析JSON时抛出的异常。Fastjson是阿里巴巴提供的一款高性能的JSON解析和生成库,它广泛应用于...

    net.sf.json jar包

    7. **错误处理**:当解析JSON字符串或生成JSON对象时,如果遇到问题,`net.sf.json`会抛出异常,如`JSONException`,帮助开发者定位并解决问题。 总之,`net.sf.json`是一个强大的Java JSON处理库,它提供了一整套...

    S2S3H3整合以及泛型Dao与Service封装

    3.1.0+hibernate-distribution-3.6.8+JSON+MySQL+Annotation,并且对Dao和Service进行了封装,内含.jar包,并且解决了一对多双向关联的could not initialize proxy - no Session错误,同时解决了……invoked on ...

    Java下的json解析工具包:org.json.jar包

    `org.json`库的核心类主要包括`JSONObject`、`JSONArray`、`JSONString`、`JSONTokener`和`JSONException`等。以下将详细阐述这些类的功能和使用方法: 1. **JSONObject**: `JSONObject`是表示JSON对象的类,它以...

    json.jar与org.json.jar包

    此外,还有`JSONException`异常类用于处理解析和序列化过程中出现的错误,以及`JSONStringer`和`JSONWriter`用于更精细的JSON构建。 在给定的压缩包文件中,除了`json.jar`之外,还包含了其他几个与JSON处理相关的...

    org.json.jar工具包下载(可用)

    3. **JSONException**: 这是处理JSON时抛出的异常类,通常当JSON格式错误或者解析出错时会抛出。 4. **JSONStringer**: 提供了一种构建JSON字符串的方法,通过调用一系列的方法,可以构造出复杂的JSON结构。 5. **...

    org.json最新版本jar包(2017.10.18)

    5. **JSONException**:当JSON操作出现错误时抛出的异常,如解析错误、无效的JSON格式等。 在2017.10.18这个版本中,可能包含了对JSON规范的更新、性能优化、bug修复以及新功能的添加。具体更新内容可以通过查看该...

    org.json.jar包

    6. **错误处理**:`JSONException` 是`org.json`库中的异常类,当解析JSON数据时遇到问题(如格式错误、键不存在等)时会抛出此异常。在使用`get()`、`opt()`等方法时,应捕获并处理此类异常。 7. **其他辅助类**:...

    json lib net.sf.json使用的所有jar包

    7. **错误处理**:库中的异常类如`JSONException`用于处理解析错误和运行时问题,帮助开发者定位和修复代码中的错误。 在实际使用中,开发者通常会将`net.sf.json`库的jar包添加到项目的类路径中,然后通过import...

    org.json.JSONObject引用依赖包

    除了`JSONObject`,`org.json`包还提供了其他类,如`JSONArray`用于处理JSON数组,`JSONStringer`和`JSONWriter`用于构建复杂的JSON结构,以及`JSONException`用于捕获处理JSON时可能出现的异常。这些工具类使得...

    org.json的依赖包

    4. **JSONException**:当JSON操作过程中出现错误时抛出的异常,比如解析错误、类型不匹配等。 5. **JSONStringer** 和 **JSONWriter**:这两个类用于构建复杂的JSON结构,提供了更灵活的API来构造JSON文本。 6. *...

    com.force.json v1.2

    5. **错误处理**:库应包含处理无效JSON的机制,例如抛出`JSONException`,当尝试解析的字符串不是有效的JSON格式时。 6. **流式解析和生成**:为了处理大规模的JSON数据,库可能支持流式API,允许逐行或逐块处理...

    org.json Jar包

    - `JSONException`:在处理JSON过程中抛出的异常,例如语法错误或数据不匹配。 - `JSONTokener`:用于解析JSON字符串,提供`next()`和`back()`等方法来移动解析位置。 - `XML`:类,提供了将XML转换为JSON的功能...

    json-src.zip org.json源码

    5. **其他辅助类**: 包括`JSONException`,这是处理JSON操作时抛出的异常;`JSONPointerException`,当尝试访问不存在的JSON键时抛出;以及`JSONWriter`,用于构建复杂的JSON结构。 在学习`org.json`源码时,可以...

    json_jar_JSON_json.jar_

    6. **错误处理**:处理可能发生的异常,如`JSONException`,确保程序的健壮性。 JSON.jar文件在Java开发中的应用非常广泛,无论是服务器端API的响应,还是客户端的数据交互,都离不开JSON格式的数据交换。因此,...

Global site tag (gtag.js) - Google Analytics