Android JSONObject - Bagaimana cara melakukan loop melalui objek JSON datar untuk mendapatkan setiap kunci dan nilai

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

Bagaimana saya bisa mendapatkan kunci dan nilai setiap item tanpa mengetahui kunci atau nilainya sebelumnya?

pengguna1763763
sumber

Jawaban:

313

Gunakan keys()iterator untuk mengulangi semua properti, dan panggil get()masing-masing.

Iterator<String> iter = json.keys();
while (iter.hasNext()) {
    String key = iter.next();
    try {
        Object value = json.get(key);
    } catch (JSONException e) {
        // Something went wrong!
    }
}
Franci Penov
sumber
7
Catatan: Anda tidak dapat menggunakan bentuk kependekan untuk (String s: json.keys ()) {...} Sangat disayangkan bahwa baik JSONArray maupun JSONObject tidak dapat diulang. :-(
tu-Reinstate Monica-dor duh
apa json disini? Json Object, Json Array atau anthing yang lain?
Pravinsingh Waghela
2
@PravinsinghWaghela itu adalah JSONObject seperti yang ditentukan dalam pertanyaan
Nicolás Carrasco
66

Versi singkat dari jawaban Franci:

for(Iterator<String> iter = json.keys();iter.hasNext();) {
    String key = iter.next();
    ...
}
Roozbeh Zabihollahi
sumber
apa json disini? Json Object, Json Array atau anthing yang lain?
Pravinsingh Waghela
json adalah JsonObject
Roozbeh Zabihollahi
@PravinsinghWaghela cukup yakin OP bertanya bagaimana melakukan loop melalui objek json.
Denny
5

Anda harus menggunakan Iteratorto loop melalui kunci untuk mendapatkan nilainya.

Ini adalah implementasi Kotlin, Anda akan menyadari bahwa cara saya mendapatkan string menggunakan optString(), yang mengharapkan String atau nilai nullable.

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

Anda harus menggunakan metode keys()atau names(). keys()akan memberi Anda iterator yang berisi semua nama properti String di objek sementara names()akan memberi Anda array dari semua nama String kunci.

Anda bisa mendapatkan dokumentasi JSONObject di sini

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

Mike Brant
sumber