Ich erstelle eine Android-App, die heruntergeladen und mit einer Online-Datenbank synchronisiert werden muss. Ich sende meine Anfrage von der App an eine PHP-Seite, die die relevanten Zeilen aus einer Datenbank im JSON-Format zurückgibt.
Kann mir bitte jemand sagen, wie ich am besten durch ein JSON-Array iterieren kann?
Ich erhalte eine Reihe von Objekten:
[{json object},{json object},{json object}]
Was ist der einfachste Code, mit dem ich auf die JSONObjects im Array zugreifen kann?
EDIT: Jetzt, wo ich darüber nachdenke, war die Methode, mit der ich die Schleife iteriert habe:
for (String row: json){
id = row.getInt("id");
name = row.getString("name");
password = row.getString("password");
}
Ich glaube, ich war irgendwie in der Lage, den zurückgegebenen Json in ein iterierbares Array zu verwandeln. Irgendwelche Ideen, wie ich das erreichen könnte?
Ich entschuldige mich für meine Unbestimmtheit, aber ich hatte dies anhand eines Beispiels, das ich im Internet gefunden habe und seitdem nicht mehr finden konnte.
Antworten:
Ich habe es auf zwei verschiedene Arten gemacht,
1.) mache eine Karte
2.) Erstellen Sie ein JSONArray mit Namen
quelle
Ich denke, dieser Code ist kurz und klar:
Haben Sie danach gesucht?
quelle
Unterstützt leider
JSONArray
keineforeach
Aussagen wie:quelle
Als ich den Vorschlag von @ vipw ausprobierte, war ich mit dieser Ausnahme konfrontiert:
The method getJSONObject(int) is undefined for the type JSONArray
Das hat bei mir stattdessen funktioniert:
quelle
Wenn Sie die Open Source- Java-Implementierung JSON.org verwenden, können Sie JSONArray einfach die Schnittstelle implementieren
Iterable
lassen und der Klasse die folgende Methode hinzufügen:Dadurch werden alle Instanzen von JSONArray iterierbar, was bedeutet, dass die
for (Object foo : bar)
Syntax jetzt damit funktioniert (beachten Sie, dass foo ein Objekt sein muss, da JSONArrays keinen deklarierten Typ haben). All dies funktioniert, weil die JSONArray-Klasse von einer einfachen ArrayList unterstützt wird, die bereits iterierbar ist. Ich stelle mir vor, dass andere Open Source-Implementierungen genauso einfach zu ändern wären.quelle
Suchen Sie auf Arrays nach:
quelle
Sie verwenden für jeden Eintrag dasselbe Cast-Objekt. Bei jeder Iteration haben Sie nur dasselbe Objekt geändert, anstatt ein neues zu erstellen.
Dieser Code sollte das Problem beheben:
quelle
Achten Sie beim Iterieren über ein JSON-Array (org.json.JSONArray, integriert in Android) auf Nullobjekte . Beispielsweise erhalten Sie möglicherweise
"null"
anstelle einer Nullzeichenfolge .Ein Scheck kann folgendermaßen aussehen:
quelle