read parse jsonserialization data array ios json swift

ios - parse - ¿Cómo puedo analizar una matriz dentro de JSON analizado en Swift?



read json swift 4 (4)

Estoy usando una API que devuelve JSON que se ve así

{ "boards":[ { "attribute":"value1" }, { "attribute":"value2" }, { "attribute":"value3", }, { "attribute":"value4", }, { "attribute":"value5", }, { "attribute":"value6", } ] }

En Swift, uso dos funciones para obtener y luego analizar 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 }

y luego lo llamo usando

var parsedJSON = parseJSON(getJSON("link-to-API"))

El JSON está bien analizado. Cuando me imprima

println(parsedJSON["boards"])

Obtengo todos los contenidos de la matriz. Sin embargo, no puedo acceder a cada índice individual. Estoy seguro de que es un Array, porque entre lo que hago

parsedJSON["boards"].count

Se devuelve la longitud correcta. Sin embargo, si intento acceder a los índices individuales utilizando

parsedJSON["boards"][0]

XCode desactiva el resaltado de sintaxis y me da esto:

y el código no compilará.

¿Es esto un error con XCode 6, o estoy haciendo algo mal?



El acceso al diccionario en Swift devuelve un Opcional, por lo que necesita forzar el valor (o usar la sintaxis if let ) para usarlo.

Esto funciona: parsedJSON["boards"]![0]

(Probablemente no debería bloquear Xcode, sin embargo)


La forma correcta de lidiar con esto sería verificar el retorno de la clave del diccionario:

if let element = parsedJSON["boards"] { println(element[0]) }


Puedes crear una variable

var myBoard: NSArray = parsedJSON["boards"] as! NSArray

y luego puedes acceder a lo que tengas en "tableros" como-

println(myBoard[0])