Android JSONObject: come posso eseguire il ciclo di un oggetto JSON semplice per ottenere ogni chiave e valore


Risposte:


313

Usa l' keys()iteratore per iterare su tutte le proprietà e chiama get()ciascuna.

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: non puoi usare la forma abbreviata per (String s: json.keys ()) {...} È un vero peccato che né JSONArray né JSONObject siano iterabili. :-(
tu-Reinstate Monica-dor duh

cos'è json qui? Oggetto Json, Json Array o altro?
Pravinsingh Waghela

2
@PravinsinghWaghela è un JSONObject come specificato nella domanda
Nicolás Carrasco

66

Versione breve della risposta di Franci:

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

cos'è json qui? Oggetto Json, Json Array o altro?
Pravinsingh Waghela

json è JsonObject
Roozbeh Zabihollahi

@PravinsinghWaghela è abbastanza sicuro che l'OP abbia chiesto come eseguire il loop attraverso un oggetto json.
Denny

5

Dovrai usare un Iteratorper scorrere le chiavi per ottenere i loro valori.

Ecco un'implementazione di Kotlin, ti renderai conto che il modo in cui ho ottenuto la stringa sta usando optString(), che si aspetta una stringa o un valore nullable.

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


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.