{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Come posso ottenere la chiave e il valore di ogni elemento senza conoscere in anticipo né la chiave né il valore?
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Come posso ottenere la chiave e il valore di ogni elemento senza conoscere in anticipo né la chiave né il valore?
Risposte:
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!
}
}
Versione breve della risposta di Franci:
for(Iterator<String> iter = json.keys();iter.hasNext();) {
String key = iter.next();
...
}
Dovrai usare un Iterator
per 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)
}
Devi usare il metodo keys()
o names()
. keys()
ti darà un iteratore contenente tutti i nomi delle proprietà String nell'oggetto mentre names()
ti darà un array di tutti i nomi delle stringhe chiave.
Puoi ottenere la documentazione di JSONObject qui
http://developer.android.com/reference/org/json/JSONObject.html
Dai un'occhiata al riferimento JSONObject:
http://www.json.org/javadoc/org/json/JSONObject.html
Senza utilizzare effettivamente l'oggetto, sembra che usare getNames () o keys () che restituisce un Iteratore è la strada da percorrere.
JSONObject
in Android non ha getNames()
. developer.android.com/reference/org/json/JSONObject.html