0

こんにちは、

Jsonリストを変換したいサーブレットがあります。

私は次のコードを使用します

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

        JSONArray mJSONArray = JSONArray.fromObject(lista_reuniones);

lista_reunionにタイプReunionのオブジェクトを格納します

コードを実行すると、次のエラーが発生します。

重大:Servlet.service()パラサーブレットreunionServletlanzóexcepciónnet.sf.json.JSON例外:階層にサイクルがあります!net.sf.json.util.CycleDetectionStrategy $ StrictCycleDetectionStrategy.handleRepeatedReferenceAsObject(CycleDetectionStrategy.java:97)at net.sf.json.JSONObject._fromBean(JSONObject.java:857)at net.sf.json.JSONObject.fromObject(JSONObject .java:192)at net.sf.json.JSONObject._processValue(JSONObject.java:2774)at net.sf.json.JSONObject._setInternal(JSONObject.java:2798)at net.sf.json.JSONObject.setValue( JSONObject.java:1507)at net.sf.json.JSONObject._fromBean(JSONObject.java:940)at net.sf.json.JSONObject.fromObject(JSONObject.java:192)at net.sf.json.JSONArray._processValue (JSONArray.java:2557)at net.sf.json.JSONArray.processValue(JSONArray.java:

問題がどこにあるか知っていますか?それが助けになるなら、データベースの図は次のとおりです。

ここに画像の説明を入力してください

どうも

4

2 に答える 2

4

組織と再会は1対多の関係です。それが双方向の関係である場合、このタイプの例外を引き起こす可能性のある循環参照を形成する可能性があります。

Jacksonを使用してBeanをシリアル化するときに、同じタイプの問題が発生しました。当時、プロジェクトでHibernateを使用していたので。

この問題は、Jacksonをシリアル化に使用し、@JsonManagedReferenceおよび@JsonBackReferenceアノテーションを使用することで回避できます。

于 2012-10-07T13:44:13.860 に答える
1

私の場合、エンティティの一部の属性がレイジー(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 に答える