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...
}
我想将传入的 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...
}