Tôi đang sử dụng Jackson 1.9.x. Giống như ví dụ vật, đây là những gì tôi muốn làm:Đa hình Jackson: Cách ánh xạ nhiều loại phụ đến cùng một lớp
Hãy nói rằng tôi có một lớp Thú:
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
}
Tôi muốn để có thể làm điều gì đó như thế này (nơi tôi bản đồ một vài phân nhóm để một lớp, và một vài chi tiết về một lớp khác nhau):
@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 {
}
gì tôi nhìn thấy ngay bây giờ là Jackson sẽ chỉ nhận ra Dog-to-động vật có vú và Dodo-to-Bird ánh xạ. Điều này là do StdSubtypeResolver._collectAndResolve() chỉ cho phép cùng một lớp được đăng ký một lần (do việc thực hiện NamedType.equals()).
Có cách giải quyết nào cho vấn đề tôi thấy không?
[This] (http://www.cowtowncoder.com/blog/archives/2010/03/entry_372.html) có vẻ liên quan ... – jahroy
Tôi đang đánh dấu câu trả lời của StaxMan là câu trả lời được chấp nhận, nhưng thực tế là ý tưởng mà anh ta đã thảo luận trong phần tiếp theo mà tôi đang lên kế hoạch thực hiện. Bây giờ tôi không có kế hoạch để nộp một RFE để theo dõi vấn đề jackson-databind. –