Jackson 1.9.x を使用しています。動物の例に固執すると、これが私がやりたいことです:
Animal クラスがあるとしましょう:
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
}
私はこのようなことをしたいと思います (いくつかのサブタイプを 1 つのクラスにマップし、さらにいくつかのサブタイプを別のクラスにマップします):
@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() の実装による)。
私が見ている問題の回避策はありますか?