There is a cycle in the hierarchy!

There is a cycle in the hierarchy!
我也遇到同样的错误,我找到了方法来解决。记录下来
首页,解释下为什么会报出这样的错误,转成json时,他会把里面的对象分解成基本类型,解析成不能再解析为止,so,由于我们的配置,就很容易出现死循环。我说的不太清楚,我把示例展示出来,大家看看吧。


...
PageSupport pas = new PageSupport();
pas.setItems(list);//list<House>
pas.setTotalPage(totalPage);
pas.setCurrentPage(currentPage);
JSONArray pasJSON = JSONArray.fromObject(pas);//是这里报出了问题

我们在查询list时,要用外链查询,一次性查出,在加个过滤的,让json避免重复循环的解析list
这是位json配置的一个文件方法。可以阻止json解释某个属性,来避免死循环

    public JsonConfig json() {
    JsonConfig cfg = new JsonConfig();
    cfg.setJsonPropertyFilter(new PropertyFilter(){
         public boolean apply(Object source, String name, Object value) {
             boolean flag;
           if(name.equals("streets")) {
             flag = true;
           } else {
             flag = false;
          }
          System.out.println(flag+"__"+name+"___________");
          //这个是我用来测试用的 ,可以看看,json倒地解析了那些内容, true阻止了,false没阻止             
          return flag;
        }
       });
    return cfg;
} 

//如上所说,你就可以使用了,list里的任何想要的内容。 解释的有的乱,希望能给你带来你想要的答案。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值