Чтение данных JSON из API

Простите меня, если это слишком широкий вопрос, кричите на меня, если это так.

Я получаю данные из API отдыха в java. Затем я хочу иметь возможность искать в данных JSON определенную пару ключ-значение. Насколько мне известно, JSONObject из org.json — хороший способ сделать это. Пока у меня есть:

URL url = new URL("api string");
HttpURLConnection connnection = (HttpURLConnection)url.openConnection();

BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String input;
StringBuffer sb = new StringBuffer();

while ((input = br.readLine()) != null){
    sb.append(input);
}
br.close();

returnedJSON = new JSONObject(sb.toString());

Итак, довольно стандартный код запроса получения.

Во-первых, я не могу сказать, нужен ли мне JSONObject или JSONArray. Все, что я исследовал, использует JSONObjects для записи из API, но я буду получать JSON в следующей форме:

[ {x:y, a:b, foo:bar}, {x:y, a:b, foo:bar}, ..., ...]

Итак, есть несколько «записей» JSON, если это имеет смысл, и я хотел бы просмотреть всю строку JSON, чтобы увидеть, существуют ли две части данных в одной записи. Пример: является ли значение «foo» ожидаемым значением для записи, где значение «x» равно «y»?

Я не понимаю, как действовать здесь, поскольку я впервые правильно использую JSON.

Если вы знаете, какой ответ JSON вы получаете, в вашем случае это JSONArray, то создайте экземпляр JSONArray вместо JSONObject.

Amit 18.04.2019 19:59

Спасибо! Остальная часть кода все еще имеет смысл в контексте JSONArray?

user10772480 18.04.2019 20:09

да, способ, которым вы получаете свой JSONArray или JSONObject, остается прежним. Как только вы доберетесь до своего конкретного формата, вы разберете ответ по-своему.

Amit 18.04.2019 20:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
308
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, вы должны использовать JSONArray вместо JSONObject, потому что это массив объектов, который вы получаете из ответа API.

Теперь повторите этот array и возьмите каждый из JSONObject , который фактически получен в виде HashMap (пара ключ-значение).

Теперь вы можете получить каждый элемент JSONObject, обратившись к их ключам.

Итак, теперь, когда я использовал JSONArray вместо obj, я понимаю, что теперь я просто перебираю массив с помощью цикла при поиске указанного значения?

user10772480 18.04.2019 20:13

Другие вопросы по теме