今天使用JSON.fronObject()时,报出了There is a cycle in the hierarchy!错误,原因就是用的POJO类与其他类之间有引用关系,具体可以进入PO类,应该会有这样一段
private Set orderInfos = new HashSet(0);
private Set staffMoneyInfos = new HashSet(0);
//.....其他代码
这时JSON序列化该对象时,引用来引用去,最后进了死循环。。所以禁止序列化这个属性即可
解决方法:
添加如下代码:
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(false); //设置默认忽略
config.setExcludes(new String[]{"orderInfos","staffMoneyInfos","companyStaffInfos","hibernateLazyInitializer"});
///
/转化json时就这样
JSONObject staffObj = JSONObject.fromObject('你要序列化的对象',config);
其中,hibernateLazyInitializer这个字段也要加上,否则会报不支持定位的更新和删除的错误。具体原因现在不明