Jackson Polymorphismus: so ordnen Sie mehrere Subtypen der gleichen Klasse

Ich bin mit Jackson 1.9.x.
Kleben mit den Tieren Beispiel, Hier ist, was ich gerne tun würde:

Sagen wir, ich habe eine Tier Klasse:

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
}

Ich würde gerne in der Lage sein, so etwas zu tun (wo ich die Karte ein paar Untertypen einer Klasse, und ein paar mehr in eine andere Klasse):

@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 {

}

Was ich jetzt gerade sehe ist, dass Jackson erkennt nur die Hund-zu-Säugetier und der Dodo-zu-Vogel-mapping. Dies ist, weil StdSubtypeResolver._collectAndResolve() erlaubt nur die gleiche Klasse, um sich einmal angemeldet (aufgrund der Umsetzung der NamedType.equals()).

Gibt es eine Lösung für das Problem bin ich zu sehen?

  • Dieser scheint im Zusammenhang mit...
  • Ich bin die Kennzeichnung StaxMan Antwort als die akzeptierte Antwort, aber eigentlich ist es die Idee, die er diskutiert in seinem follow-up, ich bin der Planung zu implementieren. Denn jetzt habe ich keinen plan-Datei ein RFE zu jackson-databind-issue-tracker.
Schreibe einen Kommentar