0

下午好,

我有一个 servlet,我想在其中转换 Json 列表。

我使用以下代码

List<Reunion> lista_reuniones = facadeReunion.getServidoresTareas();

        JSONArray mJSONArray = JSONArray.fromObject(lista_reuniones);

在 lista_reunion 我存储 Reunion 类型的对象

当我运行代码时出现以下错误:

严重:Servlet.service() para servlet reunionServlet lanzó excepción net.sf.json.JSONException: 层次结构中有一个循环!在 net.sf.json.util.CycleDetectionStrategy$StrictCycleDetectionStrategy.handleRepeatedReferenceAsObject(CycleDetectionStrategy.java:97) 在 net.sf.json.JSONObject._fromBean(JSONObject.java:857) 在 net.sf.json.JSONObject.fromObject(JSONObject .java:192) 在 net.sf.json.JSONObject._processValue(JSONObject.java:2774) 在 net.sf.json.JSONObject._setInternal(JSONObject.java:2798) 在 net.sf.json.JSONObject.setValue( JSONObject.java:1507) 在 net.sf.json.JSONObject._fromBean(JSONObject.java:940) 在 net.sf.json.JSONObject.fromObject(JSONObject.java:192) 在 net.sf.json.JSONArray._processValue (JSONArray.java:2557) 在 net.sf.json.JSONArray.processValue(JSONArray.java:

你知道问题出在哪里吗?如果有帮助的话,数据库的示意图如下:

在此处输入图像描述

谢谢

4

2 回答 2

4

组织与团聚是一对多的关系。如果是双向关系,则可以形成循环引用,从而导致此类异常。

使用 Jackson 序列化我的 bean 时,我遇到了同样类型的问题。因为我当时在我的项目中使用 Hibernate。

您可以通过使用 Jackson 进行序列化并使用 @JsonManagedReference 和 @JsonBackReference 注释来避免此问题。

于 2012-10-07T13:44:13.860 回答
1

就我而言,出现问题是因为我的实体中的某些属性是 Lazy (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);

这对我很有效。;-)

于 2013-08-26T19:20:04.750 回答