如何从对象获取List?您可以在下面找到我的代码:
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]
我需要将这些字符串列表动态使用它。你能帮忙吗?
答案 0 :(得分:11)
试一试。这应该工作。
ResponseEntity<String[]> responseEntity = restTemplate.getForEntity("localhost:8083/connectors/", String[].class);
List<String> object = Arrays.asList(responseEntity.getBody());
对于简单的情况,上面的代码可以工作,但是当你想要映射复杂的json结构时,最好使用ParameterizedTypeReference。
ResponseEntity<List<String>> responseEntity =
restTemplate.exchange("localhost:8083/connectors/",
HttpMethod.GET, null, new ParameterizedTypeReference<List<String>>() {
});
List<String> listOfString = responseEntity.getBody();
答案 1 :(得分:0)
如果您确定此对象始终为List
,则只需将其转换为
List<?> lst= (List) responseEntity.getBody();
但是,您无法直接将其强制转换为List<String>
,因此您必须通过循环或流检查元素类型以生成类型列表。
使用过的API能否以任何方式返回实际类型?
答案 2 :(得分:0)
您可以尝试将其作为解决方法
List list = java.util.Arrays.asList(object.toString());
或者您也可以使用像这样的库 ObjectMapper, 这会直接将json字符串转换为您想要的模型
答案 3 :(得分:0)
如果要使用jwt进行授权,请遵循以下代码,然后要检索列表:
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
// set `content-type` header
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
// request body parameters
Map<String, String> map = new HashMap<>();
map.put("email", "abc@email.com");
map.put("password", "pass123");
// build the request
HttpEntity<Map<String, String>> entity = new HttpEntity<>(map, headers);
// send POST request
ResponseEntity<String> response = restTemplate.postForEntity("http://localhost:8080/user/login", entity, String.class);
HttpHeaders myHeader = new HttpHeaders();
myHeader.add("User-Agent", "Spring's RestTemplate" );
myHeader.set("Authorization","Bearer "+response.getBody());
HttpEntity<String> request = new HttpEntity<>(myHeader);
ResponseEntity<Product[]> responseEntity = restTemplate.exchange("http://localhost:8080/secure/products", HttpMethod.GET, request, Product[].class);
List<Product> object = Arrays.asList(responseEntity.getBody());
System.out.println(object);
答案 4 :(得分:-1)
这对你有用:
ResponseEntity<Object[]> responseEntity = restTemplate.getForEntity("localhost:8083/connectors/", Object[].class);
List<Object> responseList = Arrays.asList(responseEntity.getBody());
(对于List []而不是Object [])