私はRESTサービスからカテゴリーとアイテムのツリーを引き出しています。カテゴリには、カテゴリやアイテムのリストを含む「子」属性があります。それらのタイプは、フィールド「種類」で指定されます。
ジャクソンのポリモーフィック型の処理は素晴らしく、1つの小さな問題を除いて、すべて期待どおりに機能しています。「種類」フィールド自体は入力されていません。このデータをpojoに取り込む簡単な方法はありますか?カスタムデシリアライザーを作成する必要がないことを願っています。
カテゴリとアイテムの基本クラスは次のとおりです。2つのサブクラスは、いくつかのスカラー場を追加しますが、あまり興味深いものではありません。
@JsonIgnoreProperties(ignoreUnknown=true)
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "kind",
defaultImpl = EntityBase.Impl.class
)
@JsonSubTypes({
@Type(value = Item.class, name = "Item"),
@Type(value = Category.class, name = "Category")
})
public abstract class EntityBase {
String title;
String kind;
public void setTitle(String title) { this.title = title; }
public String getTitle() { return title; }
public void setKind(String kind) { this.kind = kind; }
public String getKind() { return kind; }
public static class Impl extends EntityBase {}
}
ObjectMapperを使用して次のような逆シリアル化を行っています。
ObjectMapper mapper = new ObjectMapper();
Category category = mapper.readValue(inputStream, Category.class);
タグに値しないほど無関係だと思いますが、念のため、これはAndroidアプリにあります。