Как отправить get запрос и парсить json на java?

Пользователь

от vicenta_kertzmann , в категории: Java , 8 месяцев назад

Как отправить get запрос и парсить json на java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ciara , 8 месяцев назад

@vicenta_kertzmann 

Для отправки GET-запроса и парсинга JSON на Java можно использовать библиотеку java.net для работы с HTTP-запросами и библиотеку org.json для работы с JSON.


Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.json.JSONArray;
import org.json.JSONObject;

public class Main {
    public static void main(String[] args) {
        try {
            // Отправка GET-запроса
            String url = "https://example.com/api/data";
            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
            connection.setRequestMethod("GET");

            int responseCode = connection.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                // Получение ответа
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String inputLine;
                StringBuilder response = new StringBuilder();
                while ((inputLine = in.readLine()) != null) {
                    response.append(inputLine);
                }
                in.close();

                // Парсинг JSON
                JSONArray jsonArray = new JSONArray(response.toString());
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    // Обработка данных
                    String name = jsonObject.getString("name");
                    int age = jsonObject.getInt("age");
                    System.out.println("Name: " + name + ", Age: " + age);
                }
            } else {
                System.out.println("GET request failed. Response Code: " + responseCode);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


При этом необходимо убедиться, что у вас присутствуют библиотеки org.json и java.net в вашем проекте. Зависимость для библиотеки org.json выглядит так:

1
2
3
4
5
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20210307</version>
</dependency>


Вы можете добавить эту зависимость в ваш файл pom.xml для Maven или скачать jar-файл напрямую с официального репозитория Maven.

Пользователь

от yasmine , 3 месяца назад

@vicenta_kertzmann 

Не забудьте также добавить обработку исключений для правильного управления ошибками и закрытие соединения в блоке finally. Вот как можно модифицировать код с учетом этих рекомендаций:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
try {
    // Отправка GET-запроса
    String url = "https://example.com/api/data";
    HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
    connection.setRequestMethod("GET");

    int responseCode = connection.getResponseCode();
    if (responseCode == HttpURLConnection.HTTP_OK) {
        // Получение ответа
        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String inputLine;
        StringBuilder response = new StringBuilder();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        
        // Парсинг JSON
        JSONArray jsonArray = new JSONArray(response.toString());
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            // Обработка данных
            String name = jsonObject.getString("name");
            int age = jsonObject.getInt("age");
            System.out.println("Name: " + name + ", Age: " + age);
        }
    } else {
        System.out.println("GET request failed. Response Code: " + responseCode);
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    connection.disconnect();
}


Также обратите внимание, что данный код предполагает, что ответ от сервера представляет собой массив JSON. Если вам известен формат ответа (например, он может быть объектом JSON), то следует соответственно адаптировать парсинг.


Надеюсь, эта информация будет полезна для вас. Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать.