使用json-lib将Java对象转json死循环问题
来源:互联网 发布:shell脚本与python 编辑:程序博客网 时间:2024/06/07 12:17
对象双向引用导致死循环
主要异常信息:There is a cycle in the hierarchy!
使用json-lib将Java对象转为json过程中,因为对象之间有相互引用关系,会发生死循环问题
以下三个实体的主要关系为:
Staff : Decidedzone <=> 1 : n <=>一个员工可以负责多个定区
Decidedzone : subarea <=> 1 : n <=>一个定区可以划分多个
子区域
Staff.java
public class Staff implements java.io.Serializable { private String id; private String name; private String station; private String standard; private Set decidedzones = new HashSet(0);// 表示员工负责的多个定区(人为划分好的区域) //下面省略...}
Decidedzone.java
public class Decidedzone implements java.io.Serializable { private String id; private Staff staff; // 负责该定区的员工 private String name; private Set subareas = new HashSet(0);// 定区下划分的子区域 //下面省略...
Subarea.java
public class Subarea implements java.io.Serializable { private String id; private Decidedzone decidedzone; // 子区域所属的分区 private String addresskey; private String startnum; private String endnum; private String single; private String position; //下面省略...
解决方法(1):
第一种情况:页面不需要展示关联数据时,将关联数据排除即可。例如,需求为员工的列表页面不需要定区的信息。StaffAction.java中的转json的部分代码
JsonConfig config = new JsonConfig();config.setExcludes(new String[]{"decidedzones"}); // 指定不需要的属性和一对多或者多对一的属性,避免出现循环问题// Staff.java 中存在decidedzones属性,Decidedzone.java中存在staff属性String json =JSONObject.fromObject(staffList,config).toString();//staffList为从数据库查询出来的集合对象
解决方法(2)
第二种情况:页面需要展示关联数据时,不仅要将关联数据排除,还要设置hibernate映射文件中的懒加载属性lazy=”false”。例如,需求为定区的列表页面不仅显示定区的信息,还需要显示负责该定区的员工信息,即多的一方需要显示一方的信息。DecidedzoneAction.java中的转json部分代码如下:
JsonConfig config = new JsonConfig();config.setExcludes(new String[]{"subareas","decidedzones"}); // 指定不需要的属性和一对多或者多对一的属性,避免出现循环问题String json =JSONObject.fromObject(decidedzoneList,config).toString();//decidedzoneList为从数据库查询出来的集合对象
hibernate映射文件配置
总结:json-lib不好用,建议使用gson或者jackson来转json
阅读全文
0 0
- 使用json-lib将Java对象转json死循环问题
- 使用json-lib将java对象转换成json字符串
- hibernate双向关联和json-lib使用的死循环问题的解决
- 使用json-lib将JSONObject转Java对象,JSONArray转Java集合
- 使用json-lib将Java对象转SONObject,Java集合转JSONArray
- 解决JSon死循环问题
- json传递死循环问题
- 使用JSON-LIB转换JAVA对象
- 使用JSON-LIB转换JAVA对象
- 使用JSON-LIB转换JAVA对象
- Json-lib使用问题
- 使用json-lib jsonObject 把json 转换成 java对象
- hibernate关联对象通过Springmvc转json死循环
- 关于json-lib将mysql中的date(time)转换成json对象出现java.sql.time not gethours问题
- json-lib 实现Java对象与json的互转
- JSON字符串和java对象的互转【json-lib】
- JSON字符串和java对象的互转【json-lib】
- JSON字符串和java对象的互转【json-lib】
- Android 高仿微信 你可能要发送的图片
- leetcode 53. Maximum Subarray DP+最大子串和
- 进入DOS世界
- Docker+Gogs搭建个人Git服务
- PAT练习题002
- 使用json-lib将Java对象转json死循环问题
- git
- 重新编写IT笔记
- dfs+数学? 单
- #NOIP模拟赛#吃糖果candy(缩小选边范围--mod区间)
- AppiumLibrary常用关键字
- 9.2题解
- virsh 查看cpu架构,以及guest vm numa应分配架构
- hdu6185 Covering (递推+矩阵快速幂)