如何将平面JSON转换为分层Java类?
作者:互联网
我需要将一些属性设置为子对象的平面JSON对象反序列化为Java对象.
{
"name": "abcd",
"addressLine1": "123",
"addressLine2": "1111"
}
Class Student {
String name;
Address address;
}
Class Address {
String line1;
String line2;
}
如何使用Jackson将我的JSON反序列化为Student对象?
我无法将addressLine1映射到Student.Address.line1
并将addressLine2更改为Student.Address.line2
解决方法:
您可以通过以下方式定义数据类:
public static class Student {
String name;
@JsonUnwrapped
Address address;
}
public static class Address {
@JsonProperty("addressLine1")
String line1;
@JsonProperty("addressLine2")
String line2;
}
然后,您可以以通常的方式使用Objectmapper-无需任何其他技巧或解决方法:
Student student = mapper.readValue(json, Student.class);
如果传入的json字符串确实采用您提供的格式(不带引号),则还应添加:
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
标签:jackson-databind,jackson,json,java 来源: https://codeday.me/bug/20191024/1923411.html