Je construis une application Android qui doit être téléchargée et synchronisée avec une base de données en ligne, j'envoie ma requête de l'application vers une page php qui renvoie les lignes pertinentes d'une base de données au format JSON.
quelqu'un peut-il me dire la meilleure façon d'itérer dans un tableau JSON?
Je reçois un tableau d'objets:
[{json object},{json object},{json object}]
Quel est le morceau de code le plus simple que je pourrais utiliser pour accéder aux JSONObjects dans le tableau?
EDIT: maintenant que j'y pense, la méthode que j'ai utilisée pour itérer la boucle était:
for (String row: json){
id = row.getInt("id");
name = row.getString("name");
password = row.getString("password");
}
Donc je suppose que j'avais été en quelque sorte capable de transformer le Json retourné en un tableau itératif. Des idées comment je pourrais y parvenir?
Je m'excuse pour mon vagabondage, mais je l'ai fait fonctionner à partir d'un exemple que j'ai trouvé sur le Web et je n'ai pas pu le trouver depuis.
Réponses:
Je l'ai fait de deux manières différentes,
1.) faire une carte
2.) créer un JSONArray de noms
la source
Je pense que ce code est court et clair:
C'est ce que tu cherchais?
la source
Malheureusement,
JSONArray
ne prend pas en charge lesforeach
déclarations, telles que:la source
Quand j'ai essayé la suggestion de @ vipw, j'ai été confronté à cette exception:
The method getJSONObject(int) is undefined for the type JSONArray
Cela a fonctionné pour moi à la place:
la source
Si vous utilisez l' implémentation Java JSON.org , qui est open source, vous pouvez simplement faire en sorte que JSONArray implémente l'
Iterable
interface et ajouter la méthode suivante à la classe:Cela rendra toutes les instances de JSONArray itérables, ce qui signifie que la
for (Object foo : bar)
syntaxe fonctionnera désormais avec lui (notez que foo doit être un Object, car les JSONArrays n'ont pas de type déclaré). Tout cela fonctionne car la classe JSONArray est soutenue par une simple ArrayList, qui est déjà itérable. J'imagine que d'autres implémentations open source seraient tout aussi faciles à changer.la source
Sur les tableaux, recherchez:
la source
Vous utilisez le même objet Cast pour chaque entrée. À chaque itération, vous venez de modifier le même objet au lieu d'en créer un nouveau.
Ce code devrait le corriger:
la source
Lors de l'itération sur un tableau JSON (org.json.JSONArray, intégré à Android), faites attention aux objets nuls ; par exemple, vous pouvez obtenir
"null"
au lieu d'une chaîne nulle .Un chèque peut ressembler à:
la source