parser jsonserialization convert ios json swift nsdictionary

ios - jsonserialization - Swift-Cómo pasar por NSDictionary



swift dictionary to json (2)

Hola, actualmente estoy aprendiendo Swift y quería extraer datos de una API JSON, el código de My Swift se ve así. Para ser específicos, necesito extraer cada clave y su valor (por ejemplo: imprimir el valor del título, la cubierta, etc.)

//Json request var error: NSError? var raw = NSString.stringWithString("http://example.com/MovieAPI/api/v1/movies/") var api_url = NSURL.URLWithString(raw) let jsonData: NSData = NSData.dataWithContentsOfURL(api_url, options: nil, error: &error) let result = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as NSDictionary for val in result { for (var i=0; i < val.value.count; i++){ //println(val.value.valueAtIndex(3)) Not Working } }

y la estructura de mi JSON es

{ data: [ { id: 2, title: "Hunger Games", cover: "http://example.com", genre: 2 } ] }

¡Ayuda!


Aquí es cómo puedes procesar un JSON dado:

let dataArray = result["data"] as NSArray; print("Data items count: /(dataArray.count)") for item in dataArray { // loop through data items let obj = item as NSDictionary for (key, value) in obj { print("Property: /"/(key as String)/"") } }

Observaciones:

Recuerde que recibe los objetos analizados como NSDictionary y cuando recorre el diccionario, el orden en el que recibe las propiedades puede diferir del orden en el JSON original.


Compruebe esta pieza de código para referencia:

// MARK: - Firebase func retrieveData(){ ref.observe(FIRDataEventType.value, with: { (snapshot) in let postDict = snapshot.value as! [String : AnyObject] let contactList = postDict["contacts"]! let user = FIRAuth.auth()!.currentUser let contactArray = contactList[user!.uid]! as! NSDictionary for (key,_) in contactArray { let contact:NSObject = contactArray[key] as! NSObject let firstName:String! = contact.value(forKey: "firstName") as? String let lastName:String! = contact.value(forKey: "lastName") as? String let company:String! = contact.value(forKey: "company") as? String let phone:String! = contact.value(forKey: "phone") as? String let email:String! = contact.value(forKey: "email") as? String print(contact.value(forKey: "firstName")!) contacts.append(Contact(firstName:firstName, lastName: lastName, company: company, phone: phone, email: email)) } self.tableView.reloadData() }) }

Se complica especialmente cuando se analiza el valor de clave en el objeto utilizable que es donde NSObject viene a rescatar para que pueda obtener los valores de clave.