Wie analysiere ich ein Array im geparsten JSON in Swift?
Ich bin über eine API, die JSON zurückgibt, die wie folgt aussieht
{
"boards":[
{
"attribute":"value1"
},
{
"attribute":"value2"
},
{
"attribute":"value3",
},
{
"attribute":"value4",
},
{
"attribute":"value5",
},
{
"attribute":"value6",
}
]
}
In Swift habe ich zwei Funktionen nutzen zu Holen und dann Parsen der JSON -
func getJSON(urlToRequest: String) -> NSData{
return NSData(contentsOfURL: NSURL(string: urlToRequest))
}
func parseJSON(inputData: NSData) -> NSDictionary{
var error: NSError?
var boardsDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(inputData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary
return boardsDictionary
}
und dann rufe ich es mit
var parsedJSON = parseJSON(getJSON("link-to-API"))
JSON geparst wird gut. Wenn ich ausdrucken
println(parsedJSON["boards"])
Bekomme ich alle Inhalte des Arrays. Aber ich bin nicht in der Lage für den Zugriff auf jeden einzelnen index. Ich bin sicher, es IST ein Array, da ween ich tun
parsedJSON["boards"].count
die richtige Länge ist zurückgegeben. Jedoch wenn ich versuchen, Zugriff auf die einzelnen Indizes durch die Verwendung
parsedJSON["boards"][0]
XCode schaltet syntax-highlighting und gibt mir diese:
und der code nicht kompiliert.
Ist das ein bug mit XCode 6, oder mache ich etwas falsch?
Kommentar zu dem Problem - Öffnen
parsedJSON["Dielen"][0] ist sicherlich objective-c-literal, aber es ist auch swift-syntax? nicht sicher (aber ich denke, es ist)
Wie es scheint, gibt es einige Fehler im Zusammenhang mit arrays von Wörterbüchern an dieser Stelle. Ich bin derzeit schlägt meinen Kopf gegen Sie als gut.
Ihre Funktion parseJson zum Absturz bringen, wenn es Fehler analysieren und null wird zurückgegeben. "Als NSDictionary" ist der Schuldige. Siehe meine Antwort hier für eine korrekte syntax auf, wie zum Parsen von JSON mit NSJSONSerialization: stackoverflow.com/a/24333999/1687195
Xcode Abstürze auf seltsame Zeiten, ist es wahrscheinlich nicht Ihr code.
InformationsquelleAutor der Frage Paul Vorobyev | 2014-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wörterbuch-Zugang in Swift gibt ein Optional, Sie müssen also die Kraft, der Wert (oder nutzen Sie die
if let
syntax) zu verwenden.Dies funktioniert:
parsedJSON["boards"]![0]
(Es sollte wohl nicht Abstürzen, Xcode, obwohl)
InformationsquelleAutor der Antwort micahbf
Werfen Sie einen Blick hier:https://github.com/lingoer/SwiftyJSON
InformationsquelleAutor der Antwort user3764120
Können Sie eine variable erstellen
und dann Sie können auf was auch immer Sie in "boards" wie-
InformationsquelleAutor der Antwort Niloy Mahmud
Den richtigen Weg, damit umzugehen wäre, zu prüfen, die Rückkehr aus der dictionary-Schlüssel:
InformationsquelleAutor der Antwort voidref