JSON Array итерация в Android / Java

Я создаю приложение для Android, которое необходимо загрузить и синхронизировать с онлайн-базой данных. Я отправляю свой запрос из приложения на страницу php, которая возвращает соответствующие строки из базы данных в формате JSON.

может кто-нибудь, пожалуйста, скажите мне лучший способ повторить через массив JSON?

Я получаю массив объектов:

[{json object},{json object},{json object}]

Какова самая простая часть кода, которую я мог бы использовать для доступа к JSONObjects в массиве?

EDIT: теперь, когда я думаю об этом, метод, который я использовал для итерации цикла, был:

 for (String row: json){ id = row.getInt("id"); name = row.getString("name"); password = row.getString("password"); } 

Поэтому я предполагаю, что мне удалось каким-то образом превратить возвращенный Json в итеративный массив. Любые идеи, как я мог бы это достичь?

Я извиняюсь за свою бродяжничество, но у меня это работает на примере, который я нашел в Интернете, и с тех пор не смог его найти.

Я сделал это двумя разными способами,

1.) составить карту

  HashMap applicationSettings = new HashMap(); for(int i=0; i 

2.) сделать JSONArray имен

  JSONArray names = json.names(); JSONArray values = json.toJSONArray(names); for(int i=0; i 

Я думаю, что этот код короткий и понятный:

 int id; String name; JSONArray array = new JSONArray(string_of_json_array); for (int i = 0; i < array.length(); i++) { JSONObject row = array.getJSONObject(i); id = row.getInt("id"); name = row.getString("name"); } 

Это то, что вы искали?

к сожалению, JSONArray не поддерживает для каждого утверждения, например:

 for(JSONObject someObj : someJsonArray) { // do something about someObj .... .... } 

Если вы используете реализацию JSON.org Java , которая является открытым исходным кодом, вы можете просто сделать JSONArray реализовать интерфейс Iterable и добавить в class следующий метод:

 @Override public Iterator iterator() { return this.myArrayList.iterator(); } 

Это сделает все экземпляры JSONArray итерабельными, что означает, что синтаксис for (Object foo : bar) теперь будет работать с ним (обратите внимание, что foo должен быть объектом, потому что JSONArrays не имеет объявленного типа). Все это работает, потому что class JSONArray поддерживается простым ArrayList, который уже является итерируемым. Я полагаю, что другие реализации с открытым исходным кодом были бы столь же легко изменены.

На Массивах, ищет:

 JSONArray menuitemArray = popupObject.getJSONArray("menuitem"); 

Вы используете один и тот же объект Cast для каждой записи. На каждой итерации вы просто изменили один и тот же объект вместо создания нового.

Этот код должен исправить:

 JSONArray jCastArr = jObj.getJSONArray("abridged_cast"); ArrayList castList= new ArrayList(); for (int i=0; i < jCastArr.length(); i++) { Cast person = new Cast(); // create a new object here JSONObject jpersonObj = jCastArr.getJSONObject(i); person.castId = (String) jpersonObj.getString("id"); person.castFullName = (String) jpersonObj.getString("name"); castList.add(person); } details.castList = castList; 

Когда я попробовал предложение @ vipw, я столкнулся с этим исключением: The method getJSONObject(int) is undefined for the type JSONArray

Это сработало для меня:

 int myJsonArraySize = myJsonArray.size(); for (int i = 0; i < myJsonArraySize; i++) { JSONObject myJsonObject = (JSONObject) myJsonArray.get(i); // Do whatever you have to do to myJsonObject... } 

Итерируя по массиву JSON (org.json.JSONArray, встроенный в Android), следите за нулевыми объектами; например, вы можете получить "null" вместо пустой строки.

Проверка может выглядеть так:

 s[i] = array.isNull(i) ? null : array.getString(i); 
  • НЕОПРЕДЕЛЕННОЕ ТОП-УРОВЕННОЕ ИСКЛЮЧЕНИЕ: com.android.dex.DexException: несколько файлов dex определяют
  • Не удается разрешить символ «GoogleCloudMessaging» GCM
  • Сериализация и де-сериализация android.graphics.Bitmap в Java
  • как динамически обновлять xml-файл из другого XML-файла?
  • Как конвертировать 24-х часовой формат в формат до 12 часов?
  • Сортировка TreeMap по значению
  • Проверка, является ли строка пустой или пустой в Java
  • Как загрузить и сохранить изображение с помощью Google App Engine (java)
  • MediaPlayer.create () всегда возвращает null
  • Нарисуйте прозрачный круг за пределами
  • Ввод пользователем петли до тех пор, пока не будут выполнены условия
  • Давайте будем гением компьютера.