Android JSONObject - Wie kann ich ein flaches JSON-Objekt durchlaufen, um jeden Schlüssel und Wert abzurufen?


Antworten:


312

Verwenden Sie den keys()Iterator, um alle Eigenschaften zu durchlaufen, und rufen Sie get()jede auf.

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
Hinweis: Sie können die Kurzform nicht für (String s: json.keys ()) {...} verwenden. Es ist wirklich schade, dass weder JSONArray noch JSONObject iterierbar sind. :-(
tu-Reinstate Monica-dor duh

Was ist Json hier? Json-Objekt, Json-Array oder sonst etwas?
Pravinsingh Waghela

2
@PravinsinghWaghela es ist ein JSONObject wie in der Frage angegeben
Nicolás Carrasco

66

Kurzfassung von Francis Antwort:

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

Was ist Json hier? Json-Objekt, Json-Array oder sonst etwas?
Pravinsingh Waghela

Json ist JsonObject
Roozbeh Zabihollahi

@PravinsinghWaghela ziemlich sicher, dass das OP gefragt hat, wie ein JSON-Objekt durchlaufen werden soll.
Denny

5

Sie müssen ein verwenden Iterator, um die Schlüssel zu durchlaufen, um ihre Werte zu erhalten.

Hier ist eine Kotlin-Implementierung. Sie werden feststellen, dass die Art und Weise, wie ich den String erhalten habe optString(), einen String oder einen nullbaren Wert erwartet.

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


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.