我正在尝试将一些 Json 解析为 Java 对象。
有些字段需要自定义行为,所以我尝试@JsonCreator
在构造函数上使用。
好吧,它可以工作,但是对于其他字段注释@JsonProperty
没有填充。
还没有检查,但我想我的对象注释@JsonUnwrapped
也没有填充。
在我的搜索中,我看到一条评论表明它是可能的,但我不知道如何,如果它确实可能的话。
json 中有大约 400 个字段,只有 5 或 6 个需要自定义行为。因此,如果我可以避免重写所有构造函数……那就太好了!
我试过的例子:
public class MyObjectA {
@JsonProperty("keyField1")
private String myField1;
@JsonUnwrapped
private MyObjectB;
private String[] myField2;
@JsonCreator
public MyObjectA(final Map<String, Object> properties){
myField2 = ... //some Business logic
}
}
六月:
ObjectMapper mapper = new ObjectMapper();
MyObjectA result = mapper.readValue(getJsonInputStream(JSON_FILE_PATH),MyObjectA.class);
Assert.notNull(result.getMyField1(),"should be populated")
Assert.notNull(result.getMyField2(),"should be populated")
Assert.notNull(result.getMyObjectB(),"should be populated")
注意:没有构造函数,其他字段填充良好