我正在从 REST 服务中提取类别和项目树。类别具有包含类别和/或项目列表的“子”属性。它们的类型在“种类”字段中指定。
Jackson 的多态类型处理非常棒,所有工作都按预期工作,除了一个小问题:“kind”字段本身没有填充。有没有一种简单的方法可以将这些数据放到 pojos 上?我希望不必编写自定义反序列化器。
这是 Category 和 Item 的基类。这两个子类添加了几个标量字段,并且不是很有趣。
@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 应用程序中。