Как взять данные из ответа CloseableHttpClient?
Как взять данные из ответа? Например хочу взять titel. Как мне это сделать? То что я получаю моим методом на скрине.
public static void main(String[] args) throws IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet("https://videocdn.tv/api/short?api_token=92nAbf1f&id=6089");
HttpResponse response = httpclient.execute(httpget);
Scanner sc = new Scanner(response.getEntity().getContent());
while(sc.hasNext()) {
System.out.println(sc.nextLine());
}
}
Ответы (1 шт):
Автор решения: lampa
→ Ссылка
Вам отдается json объект в виде строки. Соответственно нужно строку распарсить в json.
Есть два пути: пойти по ветке объекта до нужного поля:
String json = EntityUtils.toString(response.getEntity());
JsonNode jsonNode = new JsonMapper().readTree(json);
for (Iterator<JsonNode> it = jsonNode.get("data").iterator(); it.hasNext(); ) {
JsonNode data = it.next();
System.out.println(data.get("title"));
}
Или воспользоваться маппингом сразу в java объекты (@Data - аннотация lombok, которая автоматически добавляет сеттеры, геттеры и прочее):
Добавим классы, описывающие ответ сервера:
@Data
private static class Result {
private Boolean result;
private List<Game> data;
}
@Data
private static class Game {
private String title;
}
И маппер:
String json = EntityUtils.toString(response.getEntity());
Result result = new ObjectMapper().readValue(json, Result.class);
for (Game game : result.getData()) {
System.out.println(game.getTitle());
}
В примерах я использовал библиотеку jackson, а точнее следующие зависимости:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.2</version>
</dependency>
