Android JSONObject - Jak mogę przejść przez płaski obiekt JSON, aby uzyskać każdy klucz i wartość


Odpowiedzi:


313

Użyj keys()iteratora, aby iterować po wszystkich właściwościach i wywołać get()każdą z nich.

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
Uwaga: nie możesz użyć krótkiej formy dla (String s: json.keys ()) {...} Szkoda, że ​​ani JSONArray, ani JSONObject nie są iterowalne. :-(
tu-Reinstate Monica-dor duh

co jest tutaj json? Json Object, Json Array czy coś jeszcze?
Pravinsingh Waghela

2
@PravinsinghWaghela to JSONObject, jak określono w pytaniu
Nicolás Carrasco

67

Krótka wersja odpowiedzi Franci:

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

co jest tutaj json? Json Object, Json Array czy coś jeszcze?
Pravinsingh Waghela

json to JsonObject
Roozbeh Zabihollahi

@PravinsinghWaghela jest prawie pewien, że OP zapytał, jak wykonać pętlę przez obiekt json.
Denny

5

Musisz użyć Iterator do zapętlenia kluczy, aby uzyskać ich wartości.

Oto implementacja Kotlina, zdasz sobie sprawę, że sposób, w jaki otrzymałem ciąg, wykorzystuje optString(), który oczekuje wartości String lub wartości null.

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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.