`

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

 
阅读更多

java程序返回json数据给extjs 前端时,可能会报net.sf.json.JSONException: There is a cycle in the hierarchy! ,此时是因为设置了hibernate关联关系,
< set  name ="areas"  inverse ="true" >
         
< key >
          
< column  name ="mid"  not-null ="true"   />
         
</ key >
         
< one-to-many  class ="Area" />
        
</ set >


设置自身关联的组对象

public   class  Map {
    
private  Integer mid;
    
private  Integer x;
    
private  Integer y;
    
private  String url;
    
private  Set < Area >  areas  =   new  HashSet < Area > ();



通过JSON-LIB来过滤关联的集合属性,代码如下:

 

JsonConfig config  =   new  JsonConfig();
//用过滤
config.setJsonPropertyFilter(
new  PropertyFilter(){
    
public   boolean  apply(Object source, String name, Object value) {
        
if (name.equals( " areas " )) { //要过滤的areas ,Map对象中的
            
return   true ;
        } 
else  {
            
return   false
;
        }
    }
});  
              
JSONObject json 
=  JSONObject.fromObject( ma , config);  // / ma 为要转成json的 Map 对象

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics