RESTサービスからカテゴリとアイテムのツリーを取得しています。カテゴリには、カテゴリおよび/またはアイテムのリストを含む「子」属性があります。それらの型は "kind"フィールドで指定されます。Jackson 2.1ポリモーフィックなデシリアライゼーション:pojoに型フィールドを設定する方法は?
ジャクソンの多型性の取り扱いはすばらしく、いずれも小さなヒッチを除いてすべて期待どおりに動作します。「種類」フィールド自体には値が設定されていません。このデータをpojosに取り込む簡単な方法はありますか?私はカスタムデシリアライザを書く必要がないことを願っています。
ここは、カテゴリとアイテムの基本クラスです。 2つのサブクラスはいくつかのスカラーフィールドを追加し、非常に興味深いものではありません。
私はこのようなObjectMapper何かを直列化復元をやっている@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 mapper = new ObjectMapper();
Category category = mapper.readValue(inputStream, Category.class);
Androidアプリ
優れた探偵作品! – StaxMan
数時間前にこの正確な問題に遭遇しました - あなたは私の髪の毛が残っているものを保存しました!けっ! – tbm