Ich werde entweder ein JSON-Objekt oder ein Array vom Server erhalten, aber ich habe keine Ahnung, welches es sein wird. Ich muss mit dem JSON arbeiten, aber dazu muss ich wissen, ob es sich um ein Objekt oder ein Array handelt.
Ich arbeite mit Android.
Hat jemand eine gute Möglichkeit, dies zu tun?
Antworten:
Ich habe einen besseren Weg gefunden, um festzustellen:
Tokenizer kann weitere Typen zurückgeben: http://developer.android.com/reference/org/json/JSONTokener.html#nextValue ()
quelle
JSONTokener
. Ich habe das nicht getan, aber ich nehme an, Sie sollten Past ("your_key") überspringen . Aber ich bin mir nicht sicher. Sie sollten jedoch in Betracht ziehen, json mapper zu verwenden: Gson, Jackson, Moshi und viele andere.Es gibt verschiedene Möglichkeiten, dies zu tun:
{
, haben Sie es mit einem zu tunJSONObject
, wenn es ein ist[
, haben Sie es mit einem zu tunJSONArray
.Object
) zu tun haben, können Sie eineinstanceof
Überprüfung durchführen.yourObject instanceof JSONObject
. Dies gibt true zurück, wenn yourObject ein JSONObject ist. Gleiches gilt für JSONArray.quelle
Dies ist die einfache Lösung, die ich unter Android verwende:
quelle
json.has("data")
voraus, dass das Ganze optional ist (nicht gefragt).Einen anderen Weg präsentieren:
Hier
server_response
ist eine Antwortzeichenfolge, die vom Server kommtquelle
Ein grundlegenderer Weg, dies zu tun, ist der folgende.
JsonArray
ist von Natur aus eine ListeJsonObject
ist von Natur aus eine Kartequelle
Instanz von
Object.getClass (). GetName ()
quelle
Für diejenigen, die dieses Problem in JavaScript angehen, hat das Folgende die Arbeit für mich erledigt (nicht sicher, wie effizient es ist).
quelle
Mein Ansatz wäre eine totale Abstraktion davon. Vielleicht findet das jemand nützlich ...
Und jetzt dieses Verhalten für immer loswerden ...
quelle