111 votes

Android JSONObject - Comment puis-je parcourir en boucle un objet JSON plat pour obtenir chaque clé et chaque 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 ?

326voto

Franci Penov Points 45358

Utilisez le keys() pour itérer sur toutes les propriétés, et appeler get() pour chacun.

Iterator<String> iter = json.keys();
while (iter.hasNext()) {
    String key = iter.next();
    try {
        Object value = json.get(key);
    } catch (JSONException e) {
        // Something went wrong!
    }
}

68voto

Roozbeh Points 1939

Version courte de la réponse de Franci :

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

6voto

Delacrix Morgan Points 205

Vous devrez utiliser un Iterator pour boucler les clés et obtenir leurs valeurs.

Voici une implémentation en Kotlin, vous réaliserez que la façon dont j'ai obtenu la chaîne est en utilisant optString() qui attend un String ou une valeur nullable.

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

3voto

Mike Brant Points 39322

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

Vous pouvez obtenir la documentation de JSONObject ici

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

-2voto

Tom Points 901

Jetez un coup d'œil à la référence JSONObject :

http://www.json.org/javadoc/org/json/JSONObject.html

Sans utiliser réellement l'objet, il semble que l'utilisation de getNames() ou keys() qui renvoie un Iterator soit la solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X