【问题标题】:Map JSON array to List using RestTemplate使用 RestTemplate 将 JSON 数组映射到 List
【发布时间】:2018-08-31 04:36:20
【问题描述】:

我在使用 RestTemplate 将以下 JSON 响应输出中的 environments 数组映射到 Environment 对象列表时遇到问题。

ApplicationData 的name 属性正在填充Deploy app,这是正确的。但是,Application Data 中的环境列表是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();

【问题讨论】:

  • 您的环境 json 中有一个额外的凸轮。我不太确定,但尝试将 @JsonIgnoreProperties(ignoreUnknown = true) 添加到 Environnement 并注意遵守 getter 的标准命名规则。您的代码似乎不错。
  • 这只是我在 JSON 输出中的一个错字

标签: java json spring jackson resttemplate


【解决方案1】:

但我没有得到的是,您序列化为List&lt;ApplicationData&gt;,但您的 JSON 输出 sn-p 仅显示单个 ApplicationData 对象,而不是包含该单个对象的列表。你有没有申请Jackson Deserialization Features,比如ACCEPT_SINGLE_VALUE_AS_ARRAY

【讨论】:

    【解决方案2】:

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

    private Environment[] environments;

    然后正确填充。

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 2021-05-18
      • 2020-02-08
      • 2012-06-07
      • 2020-01-06
      • 2017-11-25
      • 2019-08-10
      • 2020-09-23
      • 2014-08-05
      相关资源
      最近更新 更多