net.sf.json.JSONException: There is a cycle in the hierarchy!

今天在使用json-lib.jar包 将List 转换为Json数据时出现
net.sf.json.JSONException: There is a cycle in the hierarchy!错误,通过查询资料得知这是因为实体类有含有外键,无法转换,通过jsonconfigsetJsonPropertyFilter()方法可以在转换json时将外键过滤掉这样就不会有这些问题了。具体做法如下

JsonConfig jsonConfig = new JsonConfig();
            jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
                
                @Override
                public boolean apply(Object arg0, String arg1, Object arg2) {
                    if("procinstance".equals(arg1)||"activity".equals(arg1)||"staff".equals(arg1)){
                        return true;
                    }else{
                        return false;
                    }
                }
            });

其中arg1未实体类中的外键属性名。

这次是第一次自己弄项目,一个比较小的查询,就想着用struts2和hibernate来进行实现,以前都是大神搭好的。这次只是引入了json-lib.jar包,然后一到转换时直接不报错执行finally方法,真是一脸懵逼,这个异常```

exception`无法捕捉,这种情况下可以加入
 catch(Throwable t){
   System.out.println(t.getMessage());
    }

这样就可以捕捉到原因了,事实证明是少引入了json-lib的那几个依赖包。

commons-beanutils-1.8.0.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
json-lib-2.1.jar
ezmorph-1.0.3.jar

这些均需要。

你可能感兴趣的:(net.sf.json.JSONException: There is a cycle in the hierarchy!)