154 votes

Itération de tableau JSON dans Android/Java

Je fais construire une application android qui a besoin de charger et de synchroniser avec une base de données en ligne, je vous fais parvenir ma requête à partir de l'app à une page php qui retourne les lignes pertinentes à partir d'une base de données au format JSON.

quelqu'un peut-il me dire la meilleure façon de parcourir un tableau JSON?

Je reçois un tableau d'objets:

[{json object},{json object},{json object}]

Quel est le plus simple morceau de code que je pourrais utiliser pour accéder à la JSONObjects dans le tableau?

EDIT: maintenant que j'y pense la méthode que j'ai utilisé pour effectuer une itération de la boucle a été:

for (String row: json){
     id = row.getInt("id");
     name = row.getString("name");
     password = row.getString("password");
}

Donc je suppose que j'ai eu était en quelque sorte en mesure de transformer le retour Json et itératif tableau. Aucune Idées de comment je pourrais faire?

Je m'excuse pour mon vaguness mais j'ai eu ce travail à partir d'un exemple que j'ai trouvé sur le web et ont depuis été incapable de le trouver.

344voto

vipw Points 4454

Je pense que ce code est court et clair :

Est-ce que vous recherchez ?

69voto

schwiz Points 13679

Je l’ai fait deux manières différentes,

1.) faire une carte

2.) faire un JSONArray des noms

3voto

b_erb Points 8869

Utiliser le Jackson Java JSON-processeur, il est également disponible pour Android.

Il y a plusieurs façons d’analyser JSON avec elle :

  • Le streaming (comme le Sax)
  • Arbre (comme DOM)
  • Objet-mappé (comme JAXB)

EDIT :

Prendre des cours de org.json, il y a déjà dans l’API android.

3voto

Paul Burke Points 9869

Cet article m’a aidé lorsque j’ai commencé avec JSON et Android :

http://www.androidcompetencycenter.com/2009/10/JSON-parsing-in-Android/

Sur les baies, cherchez :

3voto

Thunderforge Points 2025

Si vous êtes à l'aide de la JSON.org implémentation de Java, qui est open source, vous pouvez simplement faire JSONArray mettre en œuvre l' Iterable interface et ajoutez la méthode suivante à la classe:

@Override
public Iterator iterator() {
    return this.myArrayList.iterator();
}

Cela permettra de faire toutes les instances de JSONArray itératif, ce qui signifie que l' for (Object foo : bar) de la syntaxe va maintenant travailler avec elle (à noter que foo doit être un Objet, parce que JSONArrays n'ont pas déclaré de type). Tout cela fonctionne parce que les JSONArray classe est soutenu par une simple liste de tableaux, ce qui est déjà itératif. J'imagine que d'autres implémentations open source serait tout aussi facile de changer.

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