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

103
{
  "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?

user1763763
la source

Réponses:

313

Utilisez l' keys()itérateur pour parcourir toutes les propriétés et appelez get()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!
    }
}
Franci Penov
la source
7
Remarque: vous ne pouvez pas utiliser la forme courte pour (String s: json.keys ()) {...} C'est vraiment dommage que ni JSONArray ni JSONObject ne soient itérables. :-(
tu-Reinstate Monica-dor duh
qu'est-ce que json ici? Json Object, Json Array ou autre chose?
Pravinsingh Waghela
2
@PravinsinghWaghela c'est un JSONObject comme spécifié dans la question
Nicolás Carrasco
66

Version courte de la réponse de Franci:

for(Iterator<String> iter = json.keys();iter.hasNext();) {
    String key = iter.next();
    ...
}
Roozbeh Zabihollahi
la source
qu'est-ce que json ici? Json Object, Json Array ou autre chose?
Pravinsingh Waghela
json est JsonObject
Roozbeh Zabihollahi
@PravinsinghWaghela à peu près sûr que l'OP a demandé comment faire une boucle à travers un objet json.
Denny
5

Vous devrez utiliser une Iteratorboucle pour parcourir les clés pour obtenir leurs valeurs.

Voici une implémentation de Kotlin, vous vous rendrez compte que la façon dont j'ai obtenu la chaîne 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)        
}
Morgan Koh
la source
3

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

Vous pouvez obtenir la documentation JSONObject ici

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

Mike Brant
la source