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 Object, Json Array или что-то еще?
Pravinsingh Waghela
2
@PravinsinghWaghela, это JSONObject, как указано в вопросе
Николас Карраско
67

Краткая версия ответа Франци:

for(Iterator<String> iter = json.keys();iter.hasNext();) {
    String key = iter.next();
    ...
}
Рузбех Забихоллахи
источник
что здесь json? Json Object, Json Array или что-то еще?
Pravinsingh Waghela
json - это JsonObject
Roozbeh Zabihollahi
@PravinsinghWaghela уверен, что OP спросил, как пройти через объект json.
Денни
5

Вам нужно будет использовать, Iteratorчтобы перебрать ключи, чтобы получить их значения.

Вот реализация Kotlin, вы поймете, что используется способ, которым я получил строку optString(), которая ожидает String или значение, допускающее значение NULL.

val keys = jsonObject.keys()
while (keys.hasNext()) {
    val key = keys.next()
    val value = targetJson.optString(key)        
}
Морган Ко
источник
3

Вам следует использовать метод keys()или names(). keys()предоставит вам итератор, содержащий все имена свойств String в объекте, в то время как names()даст вам массив всех ключевых имен String.

Вы можете получить документацию JSONObject здесь

http://developer.android.com/reference/org/json/JSONObject.html

Майк Брант
источник