Android JSONObject - Як я можу перейти через плоский об'єкт JSON, щоб отримати кожен ключ та значення


Відповіді:


313

Використовуйте keys()ітератор, щоб перебрати всі властивості та зателефонувати get()за кожним.

Iterator<String> iter = json.keys();
while (iter.hasNext()) {
    String key = iter.next();
    try {
        Object value = json.get(key);
    } catch (JSONException e) {
        // Something went wrong!
    }
}

7
Примітка: Ви не можете використовувати коротку форму для (String s: json.keys ()) {...} Дуже шкода, що ні JSONArray, ні JSONObject не можуть бути доступними. :-(
tu-Reinstate Monica-dor duh

що тут json? Об'єкт Json, масив Json чи інше?
Pravinsingh Waghela

2
@PravinsinghWaghela це JSONObject, як зазначено в запитанні
Nicolás Carrasco

66

Коротка версія відповіді Франці:

for(Iterator<String> iter = json.keys();iter.hasNext();) {
    String key = iter.next();
    ...
}

що тут json? Об'єкт Json, масив Json чи інше?
Pravinsingh Waghela

json is JsonObject
Roozbeh Zabihollahi

@PravinsinghWaghela впевнений, що ОП запитав, як пройти через об’єкт json.
Денні

5

Вам потрібно буде використовувати Iterator отримати їх значення, циклічним перемиканням клавіш.

Ось реалізація Kotlin, ви зрозумієте, що так, як я отримав рядок, використовується optString(), що очікує значення String або нульове значення.

val keys = jsonObject.keys()
while (keys.hasNext()) {
    val key = keys.next()
    val value = targetJson.optString(key)        
}


-2

Погляньте на посилання JSONObject:

http://www.json.org/javadoc/org/json/JSONObject.html

Без фактичного використання об'єкта, це схоже на використання або getNames (), або клавіш (), який повертає Ітератор - це шлях.


1
Неправильне посилання. У JSONObjectAndroid немає getNames(). developer.android.com/reference/org/json/JSONObject.html
Weetu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.