我正在使用Jackson 1.9.x. 與動物例如堅持,這是我想做什麼:Jackson多態性:如何將多個亞型映射到相同的類
比方說,我有一個動物類:
public class Animal {
private String type;
// accessors
}
public class Mammal extends Animal {
private String diet;
// accessors
}
public class Bird extends Animal {
private boolean tropical;
// accessors
}
我希望能夠做這樣的事情(在這裏我地圖幾個亞型一類,而多了一些不同的類):
@JsonTypeInfo(use = Id.NAME, include = As.PROPERTY, property = "type")
@JsonSubTypes({@JsonSubTypes.Type(value = Mammal.class, name = "Dog"),
@JsonSubTypes.Type(value = Mammal.class, name = "Cat"),
@JsonSubTypes.Type(value = Bird.class, name = "Dodo"},
@JsonSubTypes.Type(value = Bird.class, name = "Cockatoo"})
public class Animal {
}
我所看到的現在的問題是,傑克遜將只認狗對哺乳動物和渡渡鳥到鳥映射。這是因爲StdSubtypeResolver._collectAndResolve()只允許同一個類註冊一次(由於NamedType.equals()的實現)。
有沒有解決我看到的問題的解決方法?
[This](http://www.cowtowncoder.com/blog/archives/2010/03/entry_372.html)似乎相關... – jahroy
我將StaxMan的答案標記爲接受的答案,但它實際上是這是他在後續討論中我打算實施的想法。目前我還沒有計劃將RFE提交給傑克遜數據綁定問題跟蹤器。 –