解决JSon死循环问题



实例:一般用户和角色的关系,关联后在Struts2 Action中查询的时候可能造成死循环问题,一般使用JsonConfig解决。


现象:

严重: Servlet.service() for servlet default threw exception
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:657)
 at net.sf.json.JSONObject.fromObject(JSONObject.java:172)
 at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)
 at net.sf.json.JSONObject._processValue(JSONObject.java:2655)
 at net.sf.json.JSONObject.processValue(JSONObject.java:2721)
 at net.sf.json.JSONObject.setInternal(JSONObject.java:2736)
 at net.sf.json.JSONObject.setValue(JSONObject.java:1424)
 at net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:765)
 at net.sf.json.JSONObject._fromBean(JSONObject.java:699)
 at net.sf.json.JSONObject.fromObject(JSONObject.java:172)
 at com.ssh2.sys.action.SysUserAction.getData(SysUserAction.java:252)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
 at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
 at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
 at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
 at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
 at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
 at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
 at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
 at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)


//Json 死循环解决办法


  JsonConfig jsonConfig = new JsonConfig();
   jsonConfig.setExcludes(new String[]{"sysUserRoles"});
  jsonConfig.setIgnoreDefaultExcludes(false);
  jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); 



红色标记的地方比较重要!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值