foreach not applicable to type org.json.JSONArray

138
02 мая 2019, 19:30

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

@Override
        protected void onPostExecute(String result) {
try {
            JSONObject JOAnswer = new JSONObject(result);
            JSONArray arr = JOAnswer.getJSONArray(fieldsJSON.rows.toString());
            for (int i = 0; i < arr.length(); i++) {
                JSONObject obj = arr.getJSONObject(i);
                Double latitude = obj.getDouble(fieldsJSON.latitude.toString());
                Double longitude = obj.getDouble(fieldsJSON.longitude.toString());
[.. ]
            }
        } catch (JSONException e) { e.printStackTrace();}
    }

Выше код, который можно было бы записать без индекса. Типа:

for(JSONObject obj : arr)

Однако что-то идёт не так. (foreach not applicable to type org.json.JSONArray). Может я что-то не понимаю и for всё-таки можно записать без явного перебора индекса?

Answer 1

foreach работает только для классов, реализующих интерфейс java.lang.Iterable. JSONArray не реализует этот интерфейс, поэтому с ним нельзя работать через foreach. Вы можете реализовать паттерн Wrapper, завернуть в него JSONArray, реализовав во Wrapper и Iterable. Но замена for на foreach того не стоит.

READ ALSO
принципы ООП или код не должен повторяться

принципы ООП или код не должен повторяться

Сейчас изучаю Java и усваиваю главные принципы ООП, хочу избежать повторяющегося однотипного кодаНиже я привел простой пример считывания...

124
Прикрепление json-файла из body для запроса

Прикрепление json-файла из body для запроса

Необходимо сделать много различных post запросов и хотелось бы заранее считывать изjson файла информацию для добавления в тело запроса

143
как зафиксировать строки и столбцы?

как зафиксировать строки и столбцы?

Есть div main, содержащий в себе div targetКак сделать при помощи flexbox так чтобы при изменении масштаба блоки target находились на своём месте?

135
Как сделать маску в css?

Как сделать маску в css?

как вот сделать вот такое при помощи css а именно цифру

152