Sie können die @JsonUnwrapped
Annotation für diesen Fall verwenden. Hier ist ein Beispiel mit einer ähnlichen Struktur zu Ihrem Beitrag
Parent.java
import com.fasterxml.jackson.annotation.JsonUnwrapped;
public class Parent {
@JsonUnwrapped
private Intermediate intermediate;
public Intermediate getIntermediate() {
return intermediate;
}
public void setIntermediate(Intermediate intermediate) {
this.intermediate = intermediate;
}
}
Intermediate.java
public class Intermediate {
private Child[] children;
public Child[] getChildren() {
return children;
}
public void setChildren(Child[] children) {
this.children = children;
}
}
Child.java
public class Child {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
Beispiel Dokument
{
"children": [
{
"name": "Foo",
"age": 20
},
{
"name": "Bar",
"age": 22
}
]
}
Testfahrer
ObjectMapper mapper = new ObjectMapper();
Parent parent = mapper.readValue(json, Parent.class);
for (Child child : parent.getIntermediate().getChildren()) {
System.out.println("Child: " + child.getName() + " is " + child.getAge() + " years old.");
}
, die die folgende Ausgabe erzeugt:
Child: Foo is 20 years old.
Child: Bar is 22 years old.
ich dies ohne das Schreiben eines [custom getan werden kann nicht glauben Deserializer] (http://www.baeldung.com/jackson-deserialization) (und Serializer) für Parent. – rmlan
@rml Wenn das Modell in meiner Frage wirklich in der Mitte eines viel größeren Modellbaums war, müsste der benutzerdefinierte Deserializer mit allem anderen in diesem Modellbaum fertig werden? Oder kann ich es begrenzen, also muss ich nur benutzerdefinierten Code um Parent/Intermediate/Child schreiben? – hvgotcodes
Sie sollten die @ JsonDeserialize (using = CustomDeserializer.class) (und @ JsonSerialize) Annotationen für das Feld selbst verwenden können, ohne das gesamte Objekt zu behandeln. [Siehe diese Frage] (http://stackoverflow.com/questions/5269637/custom-deserialization-of-json-field-with-jackson-in-java) – rmlan