Простите меня, если это слишком широкий вопрос, кричите на меня, если это так.
Я получаю данные из 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.
Спасибо! Остальная часть кода все еще имеет смысл в контексте JSONArray?
да, способ, которым вы получаете свой JSONArray или JSONObject, остается прежним. Как только вы доберетесь до своего конкретного формата, вы разберете ответ по-своему.




Прежде всего, вы должны использовать JSONArray вместо JSONObject, потому что это массив объектов, который вы получаете из ответа API.
Теперь повторите этот array и возьмите каждый из JSONObject , который фактически получен в виде HashMap (пара ключ-значение).
Теперь вы можете получить каждый элемент JSONObject, обратившись к их ключам.
Итак, теперь, когда я использовал JSONArray вместо obj, я понимаю, что теперь я просто перебираю массив с помощью цикла при поиске указанного значения?
Если вы знаете, какой ответ JSON вы получаете, в вашем случае это JSONArray, то создайте экземпляр JSONArray вместо JSONObject.