У меня есть 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?




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