Как десериализовать вложенный список с RestTemplate? - PullRequest
0 голосов
/ 28 января 2019

У меня есть ответ, полученный при вызове RestTemplate.У меня проблема с десериализацией ответа на целевой класс.Я могу получить «код» и «сообщение», но я не могу получить данные в виде списка.Вот мой класс ответа и вызов RestTemplate.

public class DataResponse {
    Long code;
    String message;
    BusinessClusterData data;
    public class BusinessClusterData {
        @SerializedName("data")
        List<BusinessClusterContent> businessClusterContentList;
        Long count;
    }
}
ResponseEntity<DataResponse> response = 
        restTemplate.exchange(url, HttpMethod.GET, entity, DataResponse.class);

Вот ответ.

{
    "code": 0,
    "message": "ok",
    "data": {
        "data": [
        {
            "name": "test_name",
            "host": "test_host",
            "segInfo": [
            {
                "state": "applyed",
                "formId": 42158
            }
        ]}
      ],
    "count": 1
  }
}

1 Ответ

0 голосов
/ 28 января 2019

Вы должны использовать @JsonProperty (com.fasterxml.jackson.annotation.JsonProperty) вместо @SerializedName, как у Гсона

public class BusinessClusterData {
    @JsonProperty("data")
    List<BusinessClusterContent> businessClusterContentList;
    Long count;
}

Также я думаю, что вы должны сделать BusinessClusterData статическим классом, поскольку он не зависит от экземпляраиз DataResponse

...