java - 如何将平面 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 to Student.Address.line1
和addressLine2 to 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);