json-lib出现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代码

  [code]

  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);