Android JSONObject: ¿Cómo puedo recorrer un objeto JSON plano para obtener cada clave y valor?


Respuestas:


313

Utilice el keys()iterador para iterar sobre todas las propiedades y llameget() a cada una.

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
Nota: No puede usar la forma corta para (String s: json.keys ()) {...} Es una verdadera lástima que ni JSONArray ni JSONObject sean iterables. :-(
tu-Restablecer Monica-dor duh

¿Qué es json aquí? Json Object, Json Array u otra cosa?
Pravinsingh Waghela

2
@PravinsinghWaghela es un JSONObject como se especifica en la pregunta
Nicolás Carrasco

66

Versión corta de la respuesta de Franci:

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

¿Qué es json aquí? Json Object, Json Array u otra cosa?
Pravinsingh Waghela

json es JsonObject
Roozbeh Zabihollahi

@PravinsinghWaghela bastante seguro de que el OP preguntó cómo recorrer un objeto json.
Denny

5

Necesitarás usar un Iterator para recorrer las claves para obtener sus valores.

Aquí hay una implementación de Kotlin, se dará cuenta de que la forma en que obtuve la cadena está usando optString(), que espera una cadena o un valor anulable.

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


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.