Jackson - 将所选字段从 JSON 映射到新的 class 实例

Jackson - map selected fields from JSON to new class instance

我想将传入的 JSON 映射到 class Foo。但我对 barBaz 字段 wchich 为空有疑问。我想也许我误解了@JsonCreator 的目的。这是我的代码:

传入JSON:

{
  "foo": "1",
  "bar": 2,
  "baz": 3
}

数据:

public class Foo {

    private String foo;
    private BarBaz barBaz;

    //getters and setters...
}

public class BarBaz {

    private int bar;
    private int baz;

    public BarBaz() {

    }

    @JsonCreator
    public BarBaz(@JsonProperty("bar") int bar, @JsonProperty("baz") int baz) {
        this.bar = bar;
        this.baz = baz;
    }

    //getters and setters...
}

它不起作用,因为 barBaz 在 JSON 中不存在。如果您这样更改它,它将起作用:

public class Foo {

    private String foo;
    private BarBaz barBaz;

    @JsonCreator
    public Foo(@JsonProperty("bar") int bar, @JsonProperty("baz") int baz) {
        this.barBaz = new BarBaz();
        this.barBaz.setBar(bar);
        this.barBaz.setBaz(baz);
    }

    //getters and setters...
}

public class BarBaz {

    private int bar;
    private int baz;

    public BarBaz() {

    }

    //getters and setters...
}