日期:2014-05-16 浏览次数:20654 次
报错
net.sf.json.JSONException: There is a cycle in the hierarchy!net.sf.json.util.CycleDetectionStrategy$StrictCycleDetectionStrategy.handleRepeatedReferenceAsObject(CycleDetectionStrategy.java:97)net.sf.json.JSONObject._fromBean(JSONObject.java:833)net.sf.json.JSONObject.fromObject(JSONObject.java:168)net.sf.json.AbstractJSON._processValue(AbstractJSON.java:265)net.sf.json.JSONArray._processValue(JSONArray.java:2514)net.sf.json.JSONArray.processValue(JSONArray.java:2539)net.sf.json.JSONArray.addValue(JSONArray.java:2526)net.sf.json.JSONArray._fromCollection(JSONArray.java:1057)net.sf.json.JSONArray.fromObject(JSONArray.java:123)net.sf.json.AbstractJSON._processValue(AbstractJSON.java:237)net.sf.json.JSONObject._processValue(JSONObject.java:2808)net.sf.json.JSONObject.processValue(JSONObject.java:2874)net.sf.json.JSONObject.setInternal(JSONObject.java:2889)net.sf.json.JSONObject.setValue(JSONObject.java:1577)net.sf.json.JSONObject._fromBean(JSONObject.java:934)net.sf.json.JSONObject.fromObject(JSONObject.java:168)net.sf.json.AbstractJSON._processValue(AbstractJSON.java:265)net.sf.json.JSONObject._processValue(JSONObject.java:2808)net.sf.json.JSONObject.processValue(JSONObject.java:2874)net.sf.json.JSONObject.setInternal(JSONObject.java:2889)net.sf.json.JSONObject.setValue(JSONObject.java:1577)net.sf.json.JSONObject._fromBean(JSONObject.java:934)net.sf.json.JSONObject.fromObject(JSONObject.java:168)net.sf.json.AbstractJSON._processValue(AbstractJSON.java:265)
?
?
?
hibernate使用CGLIB把POJO的domain对象动态代理,实现它的魔法,但是给JSON的序列化带来了麻烦,因为JSON无法对lazy的属性进行序列化。有以下的四个方法可以解决hibernate的序列化问题
domain类实现JSONString接口
用属性过滤器1. 实现JSONString接口是侵入性最强的方法
public class Person implements JSONString { private String name; private String lastname; private Address address; // getters & setters