Java-从ResponseEntity列表中获取一项

时间:2019-03-13 09:34:57

标签: java spring list

我的ResponseEntity返回了<List>,我只想访问列表中的一项,但是.getBody()方法返回了所有数据。

RestTemplate restTemplate = new RestTemplate();
ResponseEntity <List> result = restTemplate.getForEntity(uri, List.class);
LOGGER.info(result.getBody());

结果看起来像这样:

[{name: data, id: data}]

我想获取id。如何在不使用索引的情况下从列表中返回特定项目。

2 个答案:

答案 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字段

希望这对您有帮助

谢谢:)