编程语言
首页 > 编程语言> > 如何将平面JSON转换为分层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映射到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