1

私はjackson2.0を使用して、それ自体への参照を持つクラスをシリアル化します。

Class A{
  String identifier;
  List<A> related;
}

JSONを次のように表示したい:

{ identifier: "name",
  related [ identifier: "related to name",
            identifier: "also related to name"]
}

基本的に、私は1つの深さの再帰を通過したいと思います。私はもう試した

@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")

ただし、元のオブジェクトへのリンクがある場合にのみ再帰を停止します。どうすればこれを修正できますか?

4

1 に答える 1

1

Jackson 2.0 ID処理は、オブジェクトの最初のインスタンスをそのまま含み、idを使用する2次参照のみを含むように設計されています。

ただし、「関連する」フィールドにカスタムシリアライザー(およびデシリアライザー)を定義して、異なるシリアル化スタイルを使用することもできます。

@JsonSerialize(contentUsing=MyIdOnlySerializer.class) List<A> related;

MyIdOnlySerializer書き出すだけになるように実装しidentifierます。

于 2012-07-24T17:00:19.427 に答える