Доступ к элементам элементов в JSONArray с помощью Java

Я только начинаю использовать json с java. Я не уверен, как получить доступ к строковым значениям в JSONArray. Например, мой json выглядит так:

{ "locations": { "record": [ { "id": 8817, "loc": "NEW YORK CITY" }, { "id": 2873, "loc": "UNITED STATES" }, { "id": 1501 "loc": "NEW YORK STATE" } ] } } 

мой код:

 JSONObject req = new JSONObject(join(loadStrings(data.json),"")); JSONObject locs = req.getJSONObject("locations"); JSONArray recs = locs.getJSONArray("record"); 

На данный момент у меня есть доступ к «записи» JSONArray, но я не уверен, как получить значения «id» и «loc» в цикле for. Извините, если это описание не слишком ясное, я немного новичок в программировании.

6 Solutions collect form web for “Доступ к элементам элементов в JSONArray с помощью Java”

Вы пытались использовать [ JSONArray.getJSONObject(int) ] ( http://json.org/javadoc/org/json/JSONArray.html#getJSONObject(int)) и [ JSONArray.length() ] ( http: // json.org/javadoc/org/json/JSONArray.html#length ()) для создания цикла for:

 for (int i = 0; i < recs.length(); ++i) { JSONObject rec = recs.getJSONObject(i); int id = rec.getInt("id"); String loc = rec.getString("loc"); // ... } 

Org.json.JSONArray не является итерируемым.
Вот как я обрабатываю элементы в файле net.sf.json.JSONArray :

  JSONArray lineItems = jsonObject.getJSONArray("lineItems"); for (Object o : lineItems) { JSONObject jsonLineItem = (JSONObject) o; String key = jsonLineItem.getString("key"); String value = jsonLineItem.getString("value"); ... } 

Прекрасно работает… 🙂

Java 8 находится на рынке после почти двух десятилетий, следующим способом является org.json.JSONArray с java8 Stream API.

 import org.json.JSONArray; import org.json.JSONObject; @Test public void access_org_JsonArray() { //Given: array JSONArray jsonArray = new JSONArray(Arrays.asList(new JSONObject( new HashMap() {{ put("a", 100); put("b", 200); }} ), new JSONObject( new HashMap() {{ put("a", 300); put("b", 400); }} ))); //Then: convert to List List jsonItems = IntStream.range(0, jsonArray.length()) .mapToObj(index -> (JSONObject) jsonArray.get(index)) .collect(Collectors.toList()); // you can access the array elements now jsonItems.forEach(arrayElement -> System.out.println(arrayElement.get("a"))); // prints 100, 300 } 

Если итерация выполняется только один раз (нет необходимости .collect )

  IntStream.range(0, jsonArray.length()) .mapToObj(index -> (JSONObject) jsonArray.get(index)) .forEach(item -> { System.out.println(item); }); 

Посмотрев на свой код, я чувствую, что вы используете JSONLIB. Если это так, посмотрите следующий fragment, чтобы преобразовать массив json в массив java.

  JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( input ); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY ); jsonConfig.setRootClass( Integer.TYPE ); int[] output = (int[]) JSONSerializer.toJava( jsonArray, jsonConfig ); 

Если это помогает кому-то другому, я смог преобразовать его в массив, выполнив что-то вроде этого,

 JSONObject jsonObject = (JSONObject)new JSONParser().parse(jsonString); ((JSONArray) jsonObject).toArray() 

… или вы должны иметь возможность получить длину

 ((JSONArray) myJsonArray).toArray().length 

HashMap regs = (HashMap) parser.parse (stringjson);

(String) (( HashMap ) regs.get (“firstlevelkey”)). Get (“secondlevelkey”);

  • Массив размером 0
  • Определите, является ли JSON JSONObject или JSONArray
  • Класс Java Comparator для сортировки массивов
  • Наилучшее обнаружение наименьшего значения в массиве
  • Преобразование байтов в Int / uint в C
  • Хранение идентификаторов R.drawable в массиве XML
  • Удалить элемент из массива
  • Сопоставление массива PostgreSQL с Hibernate
  • Проверьте, содержит ли строка значение в массиве
  • Как создать multidimensional array numpy с переменным размером строки?
  • Почему System.arraycopy является родным в Java?
  • Interesting Posts

    Каковы различия между веб-службами WCF и ASMX?

    Как создать и обработать составной первичный ключ в JPA

    «Ограниченная» папка / файлы в OS X El Capitan

    Как вы обновляете файл Excel (формулы обновления и обновления данных) БЕЗ открытия файла?

    Как настроить маршрутизацию ASP.NET MVC, чтобы скрыть имя controllerа на домашней странице?

    Ограничение для предотвращения вставки пустой строки в MySQL

    Работа с огромными файлами в VIM

    Scala “<-" для понимания

    Как настроить параметры прокси-сервера, чтобы Eclipse мог загружать новые плагины?

    Excel 2007 – Пользовательские значения оси Y

    Как я могу имитировать нижний лист из приложения «Карты»?

    Какую файловую систему следует использовать между OSX и Linux

    Целевое поле в ярлыке Windows отключено

    Как захватить событие щелчка кнопки закрытия JFrame?

    Подключение внутреннего жесткого диска SATA к eSATA

    Давайте будем гением компьютера.