reddit API から POJO への一部のコンテンツのデシリアライズに取り組んでいます。Reddit 内のエンティティ間の JSON 構造は通常同じであるため、私の目標はコードを可能な限り単純化することです。
例として、リンク オブジェクトを逆シリアル化する JSON は次のようになります。
[
{
"kind": "Listing",
"data": {
"modhash": "",
"children": [
{
"kind": "t3",
"data": {
"title": "A sample link from reddit"
}
}
]
}
}
]
これは問題なくデシリアライズできますが、reddit コメントはその下のオブジェクト内にkind
oft1
と異なる構造を持つことで異なるdata
ため、複数のコピーされたクラスを作成する代わりに、それをラップする JSON に同じクラス構造を再利用したいと考えています。 1 行または 2 行の違いがあります。
空のインターフェイス を作成し、それを実装するクラスRedditEntity
を作成しました。RedditLink
私の問題は、デシリアライズするインターフェイスの実装をジャクソンに伝える方法がわからないことです。通常は@JsonSubType
アノテーションを使用しますが、それはオブジェクト内のメンバーに対してのみ機能し、それをラップするメンバーに対しては機能しません。また、親オブジェクトから型を判別できる同様のレベルで機能するカスタム デシリアライザーを作成する方法もわかりません。
私の質問は、その上の型data
に基づいてオブジェクトをどのように逆シリアル化できるかということです。kind