Ich verwende einen 3rd-Party-Service, der JSON ausspuckt, die ich in Java-POJOs deserialisieren möchte. Der JSON-Dienst kann nicht geändert werden und ich verwende Java 8 und Jackson 2.4.Deserialisieren in polymorphe Sammlung mit Jackson ohne Verwendung von @JsonTypeInfo
Hier ist eine vereinfachte Version meines Problems. Ich habe eine Schnittstelle und zwei konkrete Klassen unter:
public interface Animal {
}
public class Dog implements Animal {
public String bark;
}
public class Cat implements Animal {
public String meow;
}
ich folgende JSON in ein List<Animal>
deserialisieren brauche:
{
"animals": [
{
"bark":"bowwow"
},
{
"bark":"woofWoof"
},
{
"meow":"meeeOwww"
},
{
"meow":"hisssss"
}
]
}
Ich mag den konkreten Java-Typen bestimmen können, auf der Grundlage der Existenz der Miau-Eigenschaft (es ist eine Katze) und der Rinde-Eigenschaft (es ist ein Hund) in der JSON. Wie kann ich das tun, Jackson?