【问题标题】:How automatically parse response String into Map using RestTemplate如何使用 RestTemplate 自动将响应字符串解析为 Map
【发布时间】:2017-04-06 16:39:07
【问题描述】:

我正在使用 RestTemplate 从 Jira 检索问题列表。作为响应,我得到了包含很多字段的字符串,其中一些是数组。请求看起来像:

 ResponseEntity<String> response =  restTemplate.exchange(url, HttpMethod.GET, entity, String.class);

响应字符串如下:

{
 "expand": "schema,names",
 "total": 12,
 "issues": [
 {
  "id": "32",
  "key": "TEST-1",
  "fields": {
    "fixVersions": [
      {
        "description": "",
        "releaseDate": "2017-04-02"
      }
    ]
},
{
  "id": "32",
  "key": "TEST-2",
  "fields": {
    "fixVersions": [
      {
        "description": "",
        "releaseDate": "2017-04-01"
      }
    ]
}
]   
}

是否可以将此 String 转换为 Map,其中 Object 可以是 String 或 Map 的 List 或类似的东西,而无需定义适当的对象。因此,我希望能够通过以下方式访问描述:response.getIssues().get(0).getFields().getFixVersion().get(0).getDescription()

在这种情况下,定义特定对象链看起来太麻烦了。

【问题讨论】:

    标签: json response resttemplate


    【解决方案1】:

    您可以创建与响应 JSON 的结构相对应的自己的 POJO 类。 根据您共享的 json,您可以拥有这样的类结构:

    public class Response {
        private String expand;
        private String total;
        private List<Issues> issues;
    }
    
    public class Issues {
        private String id;
        private String key;
        private Map<String, List<FixVersions> fields;
    }
    
    public class FixVersions {
        private String description;
        private String releaseData;
    }
    

    您的GET 电话将更改为以下内容:

    ResponseEntity 响应 = restTemplate.exchange(url, HttpMethod.GET, 实体, Response.class);

    附: - POJO 类中的所有字段都必须有自己的 getter 和 二传手也是如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 1970-01-01
      相关资源
      最近更新 更多