如何从 Spring RestTemplate 中的对象获取列表

2022-09-03 18:34:29

如何从对象获取列表?您可以在下面找到我的代码:

ResponseEntity<Object> responseEntity = restTemplate.getForEntity("localhost:8083/connectors/", Object.class);
Object object = responseEntity.getBody();

实际上,对象变量是对象列表(字符串),我需要获取所有这些字符串。

如果我把它打印出来,它看起来像这样:System.out.println(object.toString());

[objvar, values, test, object, servar, larms, aggregates, sink, records]

我需要获取这些字符串的列表才能动态使用它。你能帮忙吗?


答案 1

试试这个。这应该有效。

ResponseEntity<String[]> responseEntity = restTemplate.getForEntity("localhost:8083/connectors/", String[].class);
List<String> object = Arrays.asList(responseEntity.getBody());

对于简单的情况,上面的代码有效,但是当您要映射复杂的json结构时,最好使用参数化TypeReference。

ResponseEntity<List<String>> responseEntity =
        restTemplate.exchange("localhost:8083/connectors/",
            HttpMethod.GET, null, new ParameterizedTypeReference<List<String>>() {
            });
List<String> listOfString = responseEntity.getBody();

答案 2

如果您确定此对象将始终是 ,只需将其强制转换即可List

List<?> lst= (List) responseEntity.getBody();

但是,您不能直接将其转换为 ,因此必须通过循环或流检查元素类型才能生成类型化列表。使用过的 API 可以通过任何方式返回实际类型?List<String>