From the tutorial I had the impression that this should work (simplified example):
public class Foo {
private String bar;
public String getBar() {
It will work if you pull your Qux
class out of Foo
public class Foo {
private String bar;
// added this
private Qux qux;
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
// added getter and setter
public Qux getQux() {
return qux;
}
public void setQux(Qux qux) {
this.qux = bar;
}
}
public static class Qux {
private String foobar;
public String getFoobar() {
return foobar;
}
public void setFoobar(String foobar) {
this.foobar = foobar;
}
}
You can configure ObjectMapper
to ignore fields it doesn't find in your class with
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
If not configured this way, it will throw exceptions while parsing if it finds a field it does not recognize on the class type you specified.
The Foo class needs an instance property of type Qux
for automatic deserialization to work. The way the Foo class is currently defined, there is no destination property to inject the qux
JSON object values.
public class Foo {
private String bar;
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
// additional property
private Qux qux;
public Qux getQux() {
return qux;
}
public void setQux(Qux value) {
qux = value;
}
public static class Qux {
private String foobar;
public String getFoobar() {
return foobar;
}
public void setFoobar(String foobar) {
this.foobar = foobar;
}
}
}