1

次の JSON API 応答があります。

{
  "_links": {
    "self": {
      "href": "http://xxx/person{?page,size,sort}",
      "templated": true
    }
},
"_embedded": {
"person": [
  {
    "datetimeCreated": "2015-08-27T11:21:34.000+0000",
    "datetimeLastUpdated": "2015-08-27T11:21:34.000+0000",
    "middleName": "Patricia"
  }
]
},
"page": {
  "size": 20,
  "totalElements": 2,
  "totalPages": 1,
  "number": 0
  }
}

応答をマップするためのこのクラスがあります。

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {
    private Links _links;
    private Person _embedded;
    private Page page;
}

「ページ」を Page クラスにマップできます。

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Page {
    private Integer size;
    private Integer totalElements;
    private Integer totalPages;
    private Integer number;
}

しかし、「_embedded」と「_links」をマップするにはどうすればよいですか? 同じメソッドを使用して _links と _embedded をマップすると、このフィールドの値は null になります。

4

1 に答える 1

1

json がデータ モデルと一致していません。同様に、_embeddedfield を の型として宣言しましたPerson。しかし、代わりに、Personフィールドなどがあります。_linkspage

私にとって、正しいデータモデルは次のようです。

  @Data
  @JsonIgnoreProperties(ignoreUnknown = true)
  public class Person1 {
    private Links _links;
    private Embedded _embedded;
    private Page page;

  @Data
  @JsonIgnoreProperties(ignoreUnknown = true)
  public static class Page {
    private Integer size;
    private Integer totalElements;
    private Integer totalPages;
    private Integer number;
  }

  @Data
  @JsonIgnoreProperties(ignoreUnknown = true)
  public class Links {
    private Self self;
  }

  @Data
  @JsonIgnoreProperties(ignoreUnknown = true)
  public static class Embedded {
    private List<Person> person;
  }

  @Data
  @JsonIgnoreProperties(ignoreUnknown = true)
  public static class Self {
    private String href;
    private boolean templated;
  }

  @Data
  @JsonIgnoreProperties(ignoreUnknown = true)
  public static class Person {
    private DateTime datetimeCreated;
    private DateTime datetimeLastUpdated;
    private String middleName;
  }
}
于 2015-09-03T17:30:59.803 に答える