使用RestTemplate将JSON数组映射到List

时间:2018-03-21 21:27:40

标签: java json spring jackson resttemplate

我无法使用environments将以下JSON响应输出中的Environment数组映射到RestTemplate个对象列表。

ApplicationData的name属性正在使用Deploy app填充,这是正确的。但是,应用程序数据中的环境列表为null。我希望在输出中填充相应的id和名称。

JSON输出

{
    "id": 4587521,
    "oid": 8738390651982315522,
    "name": "Deploy app",
    "description": "",
    "environments": [
        {
            "id": 4751361,
            "name": "Stage",
            "position": 0,
            "configurationState": "TASKED"
        },
        {
            "id": 4751362,
            "name": "Dev",
            "position": 1,
            "configurationState": "TASKED"
        },
    ]
}

ApplicationData.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class ApplicationData {

  private String name;
  private List<Environment> environments;

  // Getters and setters omitted
}

Environment.java

public class Environment {

    private String id;
    private String name;

    // Getters and setters omitted
}

RestTemplate代码

List<ApplicationData> applications = new ArrayList<>();

ResponseEntity<List<ApplicationData>> response =
  restTemplate.exchange("/deploy/project/all", HttpMethod.GET, null, 
  new ParameterizedTypeReference<List<ApplicationData>>() {});

applications = response.getBody();

2 个答案:

答案 0 :(得分:0)

我最终修改了我的ApplicationData类,因此该属性是一个Environment对象数组:

private Environment[] environments;

然后填充正确。

答案 1 :(得分:0)

但我没有得到的是,您序列化为List<ApplicationData>,但您的JSON输出片段仅显示单个ApplicationData对象,而不是具有此单个对象的列表。您是否应用了ACCEPT_SINGLE_VALUE_AS_ARRAY之类的任何Jackson Deserialization Features