0

最近、Jackson 2.0.5 にアップグレードしたところ、@JsonIdentityInfo という新しい属性を発見しました。これにより、オブジェクトを 1 回定義するだけで、シリアライザーにその単一のオブジェクトへの参照を作成させることができ、表示されるたびに重複を作成する必要がなくなりました。実際にはかなりいいです。http://wiki.fasterxml.com/JacksonFeatureObjectIdentity

ドキュメントには、この機能は現在まだ配列をサポートしていないと記載されています。誰かがこれに対する他のアプローチを知っているかどうか疑問に思っていましたか? 次のような JSON のスニペットがあります。

{
    "people":[ 
       { "@id" = 1, "name"="bill"},
       { "@id" = 2, "name"="joe"}
    ],
    "friends": [1,2]

}

「人」と同じように、「人」オブジェクトの配列で「友達」を膨らませたいと思います。これを行う方法を知っている人はいますか?

4

2 に答える 2

1

できることは、配列またはリストのみを含むラッパー POJO を使用することです。その POJO は ID 処理を正常に使用できます。レベルが 1 つ追加されますが、うまく機能するはずです。

List/array タイプのサポートを確認したい場合は、Githubで RFE を提出してください。実装するのは簡単ではありませんが、かなりの作業が必要になる可能性があります (これが、元の実装が JSON オブジェクトとして表現されるものに焦点を当てた理由です)。

于 2012-08-18T17:17:48.337 に答える
1

JSOG JS ライブラリ: https://github.com/jsog/jsogでそれを行うことができますが、次のようなデータをシリアル化する必要があります。

{
"people":[ 
   { "@id" = 1, "name"="bill"},
   { "@id" = 2, "name"="joe"}
],
"friends": [ {@ref = 1}, {@ref = 2}]

}

または JSOG ライブラリを変更します。

于 2013-09-01T16:37:29.633 に答える