先写一下原因吧!我是写的SSH项目,在项目中我遇到的问题是把分页对象(也就是pageBean对象)转化为json数据,下面为代码:

public class PageBean <T>{
//当前页
private int pageNum;
//页面显示数量
private int pageSize; 
//查询总数(查询数据库所得)
private int totalRecord;
//当前页开始索引
private int startIndex; 
//总页面数
private int totalPage; 
//数据
private List<T> data;

由于我写的是组与成员之间的组那块,组与成员

在hibernate关系是多对多关系,当你想把组成员对象集合转化为jsong格式,那么你应该发现在成员对象中是包含组对象集合的,而组对象是包含成员对象的集合。这就是问题所在,也是异常

freemarker.template.TemplateModelException: Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.json.JSONException: There is a cycle in the hierarchy!
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)

因为你想把组对象转为为json对象,那么在转化时必然会去把成员对象转化为json,所以导致死循环。

你要做的事破除该死循环,附上所有代码

PageBean<User> resultUser = userService.findUserByUse(evenFind);//查找所有用户组对象数据并封装到分页对象中
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject = new JSONObject();
if(resultUser != null){

//循环把每个对象取出,生成json对象,不能直接生成json数组对象,否则会报原来的错误,
if(resultUser.getData().size()>0){
for(int i= 0 ;i<resultUser.getData().size();i++){
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setIgnoreDefaultExcludes(true);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
//防止自包含
String [] strArry= {"userGounp"};

//需要去除转化为json对象的属性名称
jsonConfig .setExcludes(strArry);
JSONObject json = JSONObject.fromObject(resultUser.getData().get(i),jsonConfig);

//添加到json对象数组中
jsonArray.add(json);
}
}
jsonObject.put("data",jsonArray);
jsonObject.put("pageSize",resultUser.getPageSize());
jsonObject.put("pageNum", resultUser.getPageNum());
}

第一次写,写的不好还请谅解。全为自己手写,和思路。

最新文章

  1. [LeetCode] Unique Substrings in Wraparound String 封装字符串中的独特子字符串
  2. SQLServer自动备份和自动删除过期文件
  3. banner秒杀
  4. [windows]禁止指定用户使用远程桌面服务登录
  5. redhat mysql 远程开启
  6. cmake编译时遇到的问题解决
  7. 程序员的视角:java 线程(转)
  8. ASP.NET Web API下的HttpController激活:程序集的解析
  9. TCPDump 抓Loopback数据包
  10. 网络协议 5 - ICMP 与 ping:投石问路的侦察兵
  11. EasyPR源码剖析(8):字符分割
  12. ThinkJS 开发node后端 使用 简介
  13. 针对负载均衡集群中的session解决方案的总结
  14. ThinkPHP 小于5.0.24 远程代码执行高危漏洞 修复方案
  15. 在VS2010中使用Git管理源代码
  16. Win2008r2 由ESXi 转换到 HyperV的处理过程
  17. JavaBean的实用工具Lombok(省去get、set等方法)
  18. poj2018(高精度二分+dp)
  19. phaser3 微信小游戏若干问题
  20. UVa 1151 - Buy or Build(最小生成树)

热门文章

  1. Java类变量和成员变量初始化过程
  2. 打破陈规抓痛点,H3 BPM10.0挑战不可能
  3. XAMARIN.ANDROID SIGNALR 实时消息接收发送示例
  4. gulp 自动添加版本号
  5. 如何使用dos命令打开当前用户、当前日期、当前时间以及当前用户加当前时间?
  6. HashMap的工作原理
  7. Nodejs之MEAN栈开发(七)---- 用Angular创建单页应用(下)
  8. Electron 不完全快速手册
  9. 让Unity NavMesh为我所用
  10. Android开发学习之路-自定义控件(天气趋势折线图)