首页 > 解决方案 > 如何使用 RestTemplate 反序列化嵌套列表?

问题描述

我有一个来自调用 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
  }
}

标签: javaserializationresttemplate

解决方案


您应该使用@JsonProperty( com.fasterxml.jackson.annotation.JsonProperty) 而不是 Gson 之@SerializedName类的

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

另外我认为你应该创建BusinessClusterData一个静态类,因为它不依赖于DataResponse


推荐阅读