Java - получить один элемент из списка ResponseEntity - PullRequest
1 голос
/ 13 марта 2019

My 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 голосов
/ 13 марта 2019

Ваш ответ [{name: data, id: data}], что означает список объекта {имя: данные, идентификатор: данные} .

Теперь класс Java будет

public class ResponseItem{

    private String name;
    private int id;

    // getter
    // setter
}

Ваш код вызывающего абонента будет выглядеть так:

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, то закомментируйте поле id из ResponseItem class

List<Integer> ids=new ArrayList<>();

        for (ResponseItem item:result
             ) {
            ids.add(item.getId());
        }

Теперь у вас есть только поле id в списке ids

Надеюсь, это поможет вам

Спасибо:)

0 голосов
/ 13 марта 2019

Тело будет содержать все тело ответа, чтобы получить один объект, вам нужно изменить сервис так, чтобы он возвращал только один объект.

Если вы не можете этого сделать, создайте простой поток Java для возврата первого элемента.

yourList.stream().filter(element -> --any condition here if needed--).findFirst().map(item -> item.id).orElse(null)

Чтобы получить список, создайте объект с этими 2 полями, id и String.

Вызов покоя будет List yourList = asList (restTemplate.getForObject (url, YourObject []. Class));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...