JavaでJersey/Jacksonを使用してJSONを逆シリアル化しようとしています。
これが私のJSONの例です
{
"text":"toto",
"link":"titi",
"items":[{
"text":"toutou",
"link":"tata",
"items":[{
"text":"toto2",
"link":"toutou2",
"data":"tonti",
]}
]}
}
だから私のJavaモデルのパーツはこのように見えます
public IItem {
...
}
public Item implements IItem {
List<IItem> items;
String text;
String link;
...
}
public ItemData extends Item {
String data;
...
}
これで、JSONを逆シリアル化しようとすると、オブジェクトマッパーは使用する具象クラスを認識しません。どうすれば彼にこれを伝えることができますか?アイテムが欲しいということです(アイテムのリスト(ItemDataのリスト))。
すべてのフィールド(テキスト、リンク、データ)を含む1つのオブジェクトのみを使用したことがありますが、私にはこのタイプのデザインの方が適しています。それだけの価値があると思いますか?
実際には、JSON構造が少し複雑であるため、複製するフィールドが複数あります。わかりやすくするために、フィールドを簡略化しました。
質問2:その後、オブジェクトをJSONで再度シリアル化する必要があります(最初の部分は一時的な開発用であり、後でJDBCドライバーからオブジェクトを入力します)。ジャージに一度に1つのレベルのみを表示するように指示するにはどうすればよいですか?
つまり、私/
は最初のレベルだけが欲しいと要求します、答えは次のようになります:
{
"text":"toto",
"link":"titi",
"items":[{
"text":"toutou",
"link":"tata",
]}
}
そして私/tata
が答えを要求するならば:
{
"text":"toutou",
"link":"tata",
"items":[{
"text":"toto2",
"link":"toutou2",
"data":"tonti"
]}
}
(質問は、最初のリクエストで2番目のレベルを非表示にする方法に関するもので、2番目のリクエストの処理方法を理解しています)。
ありがとう、