web-dev-qa-db-fra.com

Android JSONObject - Comment puis-je parcourir en boucle un objet JSON plat pour obtenir chaque clé et valeur

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

Comment puis-je obtenir la clé et la valeur de chaque élément sans connaître la clé ni la valeur au préalable?

92
user1763763

Utilisez le keys() iterator pour parcourir toutes les propriétés et appelez get() pour chacune d’elles.

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

Version courte de la réponse de Franci:

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

Vous devez utiliser la méthode keys() ou names(). keys() vous donnera un itérateur contenant tous les noms de propriétés de chaîne dans l'objet tandis que names() vous donnera un tableau de tous les noms de clés de chaînes.

Vous pouvez obtenir la documentation JSONObject ici

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

3
Mike Brant

Vous devrez utiliser une variable Iterator pour parcourir les clés et obtenir leurs valeurs. 

Voici une implémentation de Kotlin, vous vous rendrez compte que la chaîne que j'ai obtenue utilise optString(), qui attend une chaîne ou une valeur nullable.

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