json-lib出现There is a cycle in the hierarchy解决办法

xiaoxiao2026-04-16  5

问题的出现

如果需要解析的数据间存在级联关系,而互相嵌套引用,在hibernate中极容易嵌套而抛出net.sf.json.JSONException: There is a cycle in the hierarchy异常。   解决办法 1.设置JSON-LIB让其过滤掉引起循环的字段。 Java代码 JsonConfig config = new JsonConfig();    config.setIgnoreDefaultExcludes(false);       config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);     config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register    config.setExcludes(new String[]{//只要设置这个数组,指定过滤哪些字段。      "consignee",      "contract",      "coalInfo",      "coalType",      "startStation",      "balanceMan",      "endStation"   });    String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}";    out.print(tempStr);   JsonConfig config = new JsonConfig(); config.setIgnoreDefaultExcludes(false); config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register config.setExcludes(new String[]{//只要设置这个数组,指定过滤哪些字段。 "consignee", "contract", "coalInfo", "coalType", "startStation", "balanceMan", "endStation" }); String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}"; out.print(tempStr);    2.设置JSON-LIB的setCycleDetectionStrategy属性让其自己处理循环,省事但是数据过于复杂的话会引起数据溢出或者效率低下。 Java代码 JsonConfig config = new JsonConfig();    config.setIgnoreDefaultExcludes(false);       config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);     config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register    String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}";    out.print(tempStr);  
转载请注明原文地址: https://www.6miu.com/read-5047438.html

最新回复(0)