在做Hibernate 映射对象转换json 的时候,常常会遇到如下异常:
net.sf.json.JSONException: There is a cycle in the hierarchy! at net.sf.json.util.CycleDetectionStrategy$StrictCycleDetectionStrategy.handleRepeatedReferenceAsObject(CycleDetectionStrategy.java:97) at net.sf.json.JSONObject._fromBean(JSONObject.java:859) at net.sf.json.JSONObject.fromObject(JSONObject.java:194) at net.sf.json.JSONObject._processValue(JSONObject.java:2793) at net.sf.json.JSONObject._setInternal(JSONObject.java:2817) at net.sf.json.JSONObject.setValue(JSONObject.java:1527) at net.sf.json.JSONObject._fromBean(JSONObject.java:946) at net.sf.json.JSONObject.fromObject(JSONObject.java:194)
解决方法:
JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); // 自动为我排除circle。 jsonConfig.setExcludes(new String[] { "user" }); // 设置转换中忽略的属性 JSONArray.fromObject(sourceList,jsonConfig)