Java JSONObject getJsonArray Пустая строка

У меня есть JSON, который возвращается следующим образом:

[{"on_arrival_inst":"Ok","order_inst":"Ok","finished_inst":"Ok"},{"on_arrival_inst":"Arrive","order_inst":"Order","finished_inst":"Finished"}]

Я пытаюсь разбить их на два массива и получить строки следующим образом:

jsonResultsObject = new JSONObject(result);
            jsonArray = jsonResultsObject.getJSONArray("");

            int count = 0;
            String onArrive, onReady, onFinished;

            while (count<jsonArray.length()){
                JSONObject JO = jsonArray.getJSONObject(count);
                onArrive = JO.getString("on_arrival_inst");
                onReady = JO.getString("order_inst");
                onFinished = JO.getString("finished_inst");

                System.out.println(onArrive);
                System.out.println(onReady);
                System.out.println(onFinished);

                count++;

            }

Однако код никогда не входит в цикл, поскольку массив не заполняется из JSONObject?

проверьте это утверждение jsonResultsObject.getJSONArray(""); Я думаю, что это неверно. Ссылка: docs.oracle.com/middleware/maf240/mobile/api-ref/oracle/adfm‌ f /…

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

Ответы 2

ваш результат - JSONArray, а не JSONObject. Вот почему вы должны преобразовать его в массив, а не в объект.

использовать

jsonResultsArray = new JSONArray(result);

вместо того

jsonResultsObject = new JSONObject(result);

и полный код будет

        jsonResultsArray = new JSONArray(result);
        int count = 0;
        String onArrive, onReady, onFinished;

        while (count<jsonResultsArray.length()){
            JSONObject JO = jsonResultsArray.getJSONObject(count);
            onArrive = JO.getString("on_arrival_inst");
            onReady = JO.getString("order_inst");
            onFinished = JO.getString("finished_inst");

            System.out.println(onArrive);
            System.out.println(onReady);
            System.out.println(onFinished);

            count++;

        }

@BigJimmyJones

Тот факт, что код не входит в цикл, объясняется тем, что ваш JSONArray не имеет ключа с именем "", но вместо этого содержит JSONObjects. Объекты и массивы в JSON имеют разные аннотации. См .: Справочный веб-сайт JSON

Итак, ваш код должен быть:

jsonResultsObject = new JSONObject(result);

            String onArrive, onReady, onFinished;

            for (int i=0;i<jsonArray.length();i++){
                JSONObject JO = jsonArray.getJSONObject(i);
                onArrive = JO.getString("on_arrival_inst");
                onReady = JO.getString("order_inst");
                onFinished = JO.getString("finished_inst");

                System.out.println(onArrive);
                System.out.println(onReady);
                System.out.println(onFinished);

            }

А также убедитесь, что ваш код находится внутри блока try - catch, чтобы поймать JSONException.

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