#java #spring #list
#java #spring #Список
Вопрос:
Мой ResponseEntity
возвращает <List>
, я хочу получить доступ только к одному элементу в списке, но .getBody()
метод возвращает все данные.
RestTemplate restTemplate = new RestTemplate();
ResponseEntity <List> result = restTemplate.getForEntity(uri, List.class);
LOGGER.info(result.getBody());
Результат выглядит примерно так:
[{name: data, id: data}]
Я хочу получить id
.Как мне вернуть определенный элемент из списка без использования индекса.
Комментарии:
1. Вам не нужен индекс, так как же вы определяете конкретный элемент ?
Ответ №1:
Ваш ответ таков, [{name: data, id: data}]
что означает список объектов {имя: данные, идентификатор: данные}.
Теперь класс 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, закомментируйте поле id из ResponseItem
класса
List<Integer> ids=new ArrayList<>();
for (ResponseItem item:result
) {
ids.add(item.getId());
}
Теперь у вас есть только поле id в ids
списке
Надеюсь, это поможет вам
Спасибо 🙂
Ответ №2:
Тело будет содержать все тело ответа, чтобы получить один объект, вам нужно изменить сервис, чтобы возвращать только один объект.
Если вы не можете этого сделать, создайте простой поток java для возврата первого элемента.
yourList.stream().filter(element -> --any condition here if needed--).findFirst().map(item -> item.id).orElse(null)
Чтобы получить список, создайте объект с этими двумя полями, id и String.
Вызовом Rest будет List yourList = asList(RestTemplate.getForObject(url, YourObject[].class));