Java 使用JSON循环
下午好 我有一个servlet,希望在其中转换Json列表 我使用以下代码Java 使用JSON循环,java,json,Java,Json,下午好 我有一个servlet,希望在其中转换Json列表 我使用以下代码 List<Reunion> lista_reuniones = facadeReunion.getServidoresTareas(); JSONArray mJSONArray = JSONArray.fromObject(lista_reuniones); List lista_reuniones=facadeReunion.getServidoresTareas(); JSONArr
List<Reunion> lista_reuniones = facadeReunion.getServidoresTareas();
JSONArray mJSONArray = JSONArray.fromObject(lista_reuniones);
List lista_reuniones=facadeReunion.getServidoresTareas();
JSONArray mJSONArray=JSONArray.fromObject(lista_Reunions);
在lista_reunion中,我存储reunion类型的对象
当我运行代码时,出现以下错误:
严重:Servlet.service()para Servlet reunionServlet lanzón
net.sf.json.JSONException:层次结构中有一个循环!
位于net.sf.json.util.CycleDetectionStrategy$StrictCycleDetectionStrategy.HandlerRepeatedReferenceAsObject(CycleDetectionStrategy.java:97)
位于net.sf.json.JSONObject.\u fromBean(JSONObject.java:857)
位于net.sf.json.JSONObject.fromObject(JSONObject.java:192)
位于net.sf.json.JSONObject.\u processValue(JSONObject.java:2774)
位于net.sf.json.JSONObject.\u setInternal(JSONObject.java:2798)
位于net.sf.json.JSONObject.setValue(JSONObject.java:1507)
位于net.sf.json.JSONObject.\u fromBean(JSONObject.java:940)
位于net.sf.json.JSONObject.fromObject(JSONObject.java:192)
net.sf.json.JSONArray.\u processValue(JSONArray.java:2557)
位于net.sf.json.JSONArray.processValue(JSONArray.java:2588)
位于net.sf.json.JSONArray.addValue(JSONArray.java:2575)
位于net.sf.json.JSONArray.\u fromCollection(JSONArray.java:1082)
位于net.sf.json.JSONArray.fromObject(JSONArray.java:145)
net.sf.json.JSONObject.\u processValue(JSONObject.java:2749)
位于net.sf.json.JSONObject.\u setInternal(JSONObject.java:2798)
位于net.sf.json.JSONObject.setValue(JSONObject.java:1507)
位于net.sf.json.JSONObject.\u fromBean(JSONObject.java:940)
位于net.sf.json.JSONObject.fromObject(JSONObject.java:192)
位于net.sf.json.JSONObject.\u processValue(JSONObject.java:2774)
位于net.sf.json.JSONObject.\u setInternal(JSONObject.java:2798)
位于net.sf.json.JSONObject.setValue(JSONObject.java:1507)
位于net.sf.json.JSONObject.\u fromBean(JSONObject.java:940)
位于net.sf.json.JSONObject.fromObject(JSONObject.java:192)
位于net.sf.json.JSONObject.\u processValue(JSONObject.java:2774)
位于net.sf.json.JSONObject.\u setInternal(JSONObject.java:2798)
位于net.sf.json.JSONObject.setValue(JSONObject.java:1507)
位于net.sf.json.JSONObject.\u fromBean(JSONObject.java:940)
位于net.sf.json.JSONObject.fromObject(JSONObject.java:192)
位于net.sf.json.JSONObject.\u processValue(JSONObject.java:2774)
位于net.sf.json.JSONObject.\u setInternal(JSONObject.java:2798)
位于net.sf.json.JSONObject.setValue(JSONObject.java:1507)
位于net.sf.json.JSONObject.\u fromBean(JSONObject.java:940)
位于net.sf.json.JSONObject.fromObject(JSONObject.java:192)
net.sf.json.JSONArray.\u processValue(JSONArray.java:2557)
位于net.sf.json.JSONArray.processValue(JSONArray.java:2588)
位于net.sf.json.JSONArray.addValue(JSONArray.java:2575)
位于net.sf.json.JSONArray.\u fromCollection(JSONArray.java:1082)
位于net.sf.json.JSONArray.fromObject(JSONArray.java:145)
位于net.sf.json.JSONArray.fromObject(JSONArray.java:127)
位于servlet.ReunionServlet.doPost(ReunionServlet.java:176)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于java.lang.Thread.run(未知源)
你知道问题出在哪里吗?如果有帮助,数据库图如下所示:
组织团聚是一对多的关系。如果是双向关系,则可能形成循环引用,从而导致此类异常 我在使用Jackson序列化我的bean时遇到了同样的问题。当时我在项目中使用Hibernate
通过使用Jackson进行序列化并使用@JsonManagedReference和@JsonBackReference注释,可以避免此问题。组织与团聚是一对多关系。如果是双向关系,则可能形成循环引用,从而导致此类异常 我在使用Jackson序列化我的bean时遇到了同样的问题。当时我在项目中使用Hibernate
您可以通过使用Jackson进行序列化并使用@JsonManagedReference和@JsonBackReference注释来避免此问题。在我的例子中,出现此问题是因为我的实体中的某些属性是惰性的(JPA) 为了解决这个问题,我将一个jsonConfig包含在这个指令中:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[]{"files", "createdBy", "lastUpdatedBy"});
jsonConfig.setIgnoreDefaultExcludes(false);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
JSONObject jsonObject = JSONObject.fromObject(obj, config);
这对我来说很有效