如何使用RestTemplate自动将响应字符串解析为Map

时间:2017-04-06 16:39:07

标签: json response resttemplate

我使用RestTemplate从Jira中检索问题列表。作为响应,我获得了包含大量字段的String,其中一些是数组。请求看起来像:

 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 of List或类似的东西,而无需定义适当的对象。因此,我希望能够通过以下方式访问说明:response.getIssues().get(0).getFields().getFixVersion().get(0).getDescription()

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

1 个答案:

答案 0 :(得分:0)

您可以创建自己的POJO类,它们对应于响应JSON的结构。 基于您共享的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 response = restTemplate.exchange(url,   HttpMethod.GET,entity,Response.class);

     

P.S。 - POJO课程中的所有字段都必须有getter和   塞特斯也是。