我试图将某些json字段映射到类实例变量。
我的示例 Person 类如下所示:
public class Person { private String name; private Address address; //many more fields //getters and setters }
示例 地址 类为:
public class Address { private String street; private String city; //many more fields // getters and setters }
要反序列化到我的Person类的json对象不包含“地址”字段。看起来像:
{ "name":"Alexander", "street":"abc 12", "city":"London" }
有没有办法将json反序列化为Person pojo,其中Address字段也正确映射?
我已经使用了自定义地址反序列化器,如此处许多文章所述。但是,由于Json对象不包含“地址”字段,因此没有被调用。
我已经通过使用JsonNode手动映射每个字段解决了这个问题,但是在我的真实项目中,这不是一个很好的解决方案。
使用Jackson可以解决此问题吗?另外,如果在此之前有人问过这个问题,那么我会为此道歉,因为我一直在寻找解决方案,但可能还没有看到。。
@JsonUnwrapped为此问题引入了注释。模型:
@JsonUnwrapped
class Person { private String name; @JsonUnwrapped private Address address; // getters, setters, toString } class Address { private String street; private String city; // getters, setters, toString }
用法:
ObjectMapper mapper = new ObjectMapper(); String json = "{\"name\":\"Alexander\",\"street\":\"abc 12\",\"city\":\"London\"}"; System.out.println(mapper.readValue(json, Person.class));
印刷品:
Person{name='Alexander', address=Address{street='abc 12', city='London'}}
有关更多信息,请阅读: