2011-12-06 10 views
5

私はGsonの循環参照に関する多くの記事を見つけましたが、私は洗練された解決策を見つけることができません。Gsonの「循環参照」についての解決法はありますか?

私が知っているように、いくつかの解決策は次のとおりです。

  • は「一過性」として循環参照の原因となったプロパティを設定します。
  • アノテーションを含むプロパティを除外します。

しかし、一般的な質問として、問題を解決するための共通の戦略がありますか?

+2

奇妙なゲームは、勝つ唯一の方法は遊ばないことです。再パーティション化のため循環参照はありません。 – DwB

+0

シリアル化だけで問題になるのですか、または逆シリアル化中に正しいリンクを確立することもありますか? –

+0

はいあります! http://stackoverflow.com/questions/10036958/the-easiest-way-to-: [1] [1] [GraphAdapterBuilder例]を含み、この記事を見てみましょう双方向再帰関係を削除する – ouba64

答えて

2

私が知る限り、Gsonの循環参照のための自動化されたソリューションはありません。 円形参照を自動的に処理する私が知っている唯一のJSON生成ライブラリは、XStream(Jettisonバックエンドを使用)です。

編集:ジャクソンはまた、@JsonIdentityInfo注釈付き循環参照の処理をサポートしています。自動ではありませんが(オブジェクトID処理が必要な参照をマークする必要があります)、ほとんどのケースを解決できます。

+1

Gsonには循環参照の自動解決法がなく、Javaのマーク付け以外のシリアル化ソリューションもありませんスキップされるフィールドおよび/またはカスタムのシリアライゼーションコードを書くことができます。あるいは、Jacksonは直列化および逆直列化の問題のアノテーションベースのソリューションを提供しています。ポイント#7を参照してくださいhttp://www.cowtowncoder.com/blog/archives/2010/11/entry_434.html –

+0

ありがとう、私はhava間接的にフィールドを除外することによって問題を解決しました。私は自由時間があるときにXStreamを勉強します。 –

+0

XStreamにプラス1つ。私が見つけた唯一の実行可能な解決策は動作するようです。 –

-4

私が知っているように、最新のGsonバージョンは機械的な損傷を解決しました。

+0

は最新バージョン(2.3.1)で試してみましたが、まだそこにあります – DaveB

関連する問題