Testen Sie, ob es JSONObject oder JSONArray ist
Ich habe einen json-stream, das kann etwas sein, wie :
{"intervention":
{
"id":"3",
"subject":"dddd",
"details":"dddd",
"beginDate":"2012-03-08T00:00:00+01:00",
"endDate":"2012-03-18T00:00:00+01:00",
"campus":
{
"id":"2",
"name":"paris"
}
}
}
oder so etwas wie
{"intervention":
[{
"id":"1",
"subject":"android",
"details":"test",
"beginDate":"2012-03-26T00:00:00+02:00",
"endDate":"2012-04-09T00:00:00+02:00",
"campus":{
"id":"1",
"name":"lille"
}
},
{
"id":"2",
"subject":"lozlzozlo",
"details":"xxx",
"beginDate":"2012-03-14T00:00:00+01:00",
"endDate":"2012-03-18T00:00:00+01:00",
"campus":{
"id":"1",
"name":"lille"
}
}]
}
In meinem Java-code, mit dem ich Folgendes tun:
JSONObject json = RestManager.getJSONfromURL(myuri); //retrieve the entire json stream
JSONArray interventionJsonArray = json.getJSONArray("intervention");
Im ersten Falle, die oben nicht funktioniert, weil es nur ein element in den stream..
Wie kann ich überprüfen, ob der stream ist eine object
oder eine array
?
Habe ich versucht mit json.length()
aber es hat nicht funktioniert..
Dank
InformationsquelleAutor der Frage Tang | 2012-04-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas wie dies sollte es tun:
Dies hat den Vorteil, sich den Wert der Eigenschaft von der Haupt -
JSONObject
nur einmal. Da bekommen Sie den Wert der Eigenschaft beinhaltet, zu Fuß ein hash-Baum oder ähnliches, das ist nützlich für die Leistung (für was es Wert ist).InformationsquelleAutor der Antwort T.J. Crowder
Vielleicht eine Prüfung wie diese?
Dieser gibt eine
JSONObject
odernull
wenn die intervention Objekt ist nicht ein JSON-Objekt. Weiter, dies zu tun:Zurückkehren array, wenn Sie eine gültige
JSONArray
oder andere wird es gebennull
.InformationsquelleAutor der Antwort Nathan Q
Es einfach zu machen, können Sie einfach überprüfen, erste-string vom server führen.
Dieser trick ist nur auf der Basis der String der JSON-format
{foo : "bar"}
(Objekt)oder
[ {foo : "bar"}, {foo: "bar2"} ]
(array)InformationsquelleAutor der Antwort azwar_akbar
Habe nicht ich tryied, aber vielleicht...
Wenn es ein JsonArray-Objekt, verwenden Sie einfach getAsJsonArray (), um ihn zu wirken. Wenn nicht, ist es ein einziges element, so fügen Sie es einfach.
Sowieso, dein erstes Beispiel ist gebrochen, sollten Sie sich Fragen, server-Besitzer, um es zu beheben. Eine JSON-Datenstruktur konsistent sein muss. Es ist nicht nur, weil irgendwann intervention kommt mit nur 1 element, dass Sie nicht brauchen, um ein array sein. Wenn es nur 1 element, wird ein array nur 1 element, aber immer noch muss ein array sein, so dass Kunden können analysiert werden, mit immer dem gleichen schema.
InformationsquelleAutor der Antwort user1930830
InformationsquelleAutor der Antwort haroon