wake-up-neo.com

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

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

Wie kann ich den Schlüssel und Wert jedes Elements erhalten, ohne vorher den Schlüssel oder Wert zu kennen?

92
user1763763

Verwenden Sie den Iterator keys() , um alle Eigenschaften zu durchlaufen und rufen Sie get() für 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!
    }
}
284
Franci Penov

Kurze Version von Francis Antwort:

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

Sie sollten die Methode keys() oder names() verwenden. keys() gibt Ihnen einen Iterator, der alle Namen der String-Eigenschaften im Objekt enthält, während names() Ihnen ein Array mit allen String-Namen gibt.

Die JSONObject-Dokumentation erhalten Sie hier

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

3
Mike Brant

Sie müssen eine Iterator verwenden, um die Tasten zu durchlaufen, um ihre Werte zu erhalten. 

Hier ist eine Kotlin-Implementierung. Sie werden feststellen, dass die Methode, auf die ich den String bekam, optString() verwendet, die einen String oder einen Wert mit Nullwert erwartet.

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