У меня есть JSONObject со структурой данных следующим образом
[{"distance":"200 meters","location_id":"519"},{"distance":"300 meters","location_id":"219"}]
и я пытаюсь пересечь каждый массив внутри этого объекта, у меня есть следующий код, где locationArray - действительный JSONObject
for (int j = 0; j < locationArray.length(); j++) {
JSONObject j_obj;
j_obj = locationArray.getJSONArray(j); //error here
location_id = j_obj.getString("location_id");
}
но я получаю ошибку, пытаясь найти каждый дополнительный массив locationArray с целым числом.
решение:
JSONArray rootArray = new JSONArray(jsonString);
int len = rootArray.length();
for(int i = 0; i < len; ++i) {
JSONObject obj = rootArray.getJSONObject(i);
location_id = obj.getString("location_id");
}
В вашем коде есть ошибка. j_obj = locationArray.getJSONArray(j);
должен быть j_obj = locationArray.getJSONObject(j);
, поскольку объект, завернутый в фигурные скобки, представляет собой JSONObject
, а не a JSONArray
Изменить: вы можете использовать obj.optString("location_id");
, чтобы избежать потенциальной проблемы