我的ResponseEntity
返回了<List>
,我只想访问列表中的一项,但是.getBody()
方法返回了所有数据。
RestTemplate restTemplate = new RestTemplate();
ResponseEntity <List> result = restTemplate.getForEntity(uri, List.class);
LOGGER.info(result.getBody());
结果看起来像这样:
[{name: data, id: data}]
我想获取id
。如何在不使用索引的情况下从列表中返回特定项目。
答案 0 :(得分:0)
主体将包含整个响应主体,要获取单个对象,您需要更改服务以仅返回单个对象。
如果无法执行此操作,请创建一个简单的Java流以返回第一个元素。
yourList.stream().filter(element -> --any condition here if needed--).findFirst().map(item -> item.id).orElse(null)
要获取具有两个字段ID和String的列表创建对象。
其他调用将是List yourList = asList(restTemplate.getForObject(url,YourObject []。class));
答案 1 :(得分:0)
您的答复是
[{name: data, id: data}]
表示对象 {名称:数据,id:数据} 的列表。
现在Java类将
public class ResponseItem{
private String name;
private int id;
// getter
// setter
}
您的Rest呼叫者代码将如下所示:
List<ResponseItem> response=new ArrayList<>();
RestTemplate restTemplate = new RestTemplate();
ResponseEntity <?> result = restTemplate.getForEntity(uri, response.getClass());
LOGGER.info(result.getBody());
现在您有了项目列表。只需将result.getBody()
转换为List<ResponseItem>
。如果您只想要ID,请从ResponseItem
类中删除ID字段
List<Integer> ids=new ArrayList<>();
for (ResponseItem item:result
) {
ids.add(item.getId());
}
现在ids
列表中只有ID字段
希望这对您有帮助
谢谢:)