swiftyjson serialize parse example data ios json swift swifty-json

ios - serialize - ¿Cómo recorrer JSON con SwiftyJSON?



swiftyjson local json file (4)

En el bucle for, el tipo de key no puede ser del tipo "title" . Ya que "title" es una cadena, ve por: key:String . Y luego, Inside the Loop puedes usar específicamente "title" cuando lo necesites. Y también el tipo de subJson tiene que ser JSON .

Y como un archivo JSON se puede considerar como una matriz 2D, el json["items''].arrayValue devolverá múltiples objetos. Es altamente recomendable usar: if let title = json["items"][2].arrayValue .

Eche un vistazo a: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html

Tengo un json que podría analizar con SwiftyJSON:

if let title = json["items"][2]["title"].string { println("title : /(title)") }

Funciona perfectamente.

Pero no pude hacerlo. Probé dos métodos, el primero es

// TUTO : //If json is .Dictionary for (key: String, subJson: JSON) in json { ... } // WHAT I DID : for (key: "title", subJson: json["items"]) in json { ... }

XCode no aceptó la declaración de bucle for.

El segundo método:

// TUTO : if let appArray = json["feed"]["entry"].arrayValue { ... } // WHAT I DID : if let tab = json["items"].arrayValue { ... }

XCode no aceptó la sentencia if.

Qué estoy haciendo mal ?


Me parece un poco extraño explicarme, porque en realidad uso:

for (key: String, subJson: JSON) in json { //Do something you want }

da errores de sintaxis (en Swift 2.0 al menos)

correcto fue:

for (key, subJson) in json { //Do something you want }

Donde de hecho clave es una cadena y subJson es un objeto JSON.

Sin embargo, me gusta hacerlo un poco diferente, aquí hay un ejemplo:

//jsonResult from API request,JSON result from Alamofire if let jsonArray = jsonResult?.array { //it is an array, each array contains a dictionary for item in jsonArray { if let jsonDict = item.dictionary //jsonDict : [String : JSON]? { //loop through all objects in this jsonDictionary let postId = jsonDict!["postId"]!.intValue let text = jsonDict!["text"]!.stringValue //...etc. ...create post object..etc. if(post != nil) { posts.append(post!) } } } }


Por favor revisa el README

//If json is .Dictionary for (key: String, subJson: JSON) in json { //Do something you want } //If json is .Array //The `index` is 0..<json.count''s string value for (index: String, subJson: JSON) in json { //Do something you want }


Si desea recorrer la matriz json["items"] , intente:

for (key, subJson) in json["items"] { if let title = subJson["title"].string { println(title) } }

En cuanto al segundo método, .arrayValue devuelve una matriz no Optional , debe usar .array en .array lugar:

if let items = json["items"].array { for item in items { if let title = item["title"].string { println(title) } } }