2016-04-27 13 views
0

Daten von json lesen Ich versuche, E-Mail von einer JSON-Datei in swift (2.2) zu lesen, das ist:wie in swift2

{ "employees" : [ 
    { 
    "name": "sudhanshu", 
    "email": "[email protected]", 
    "password": "password" 
    "profilePic": "" 
}, 
{ 
    "name": "prokriti", 
    "email": "[email protected]", 
    "password": "[email protected]", 
    "profilePic": "" 
    } 
]} 

Aber ich bin immer Fehler "Error Domain = NSCocoaErrorDomain-Code = 3840" Unescaped Steuerzeichen um Zeichen 128. "UserInfo = {NSDebugDescription = Unescaped Steuerzeichen um Zeichen 128.}" Ich habe frühere Posts aber nicht finden können, wo genau Problem ist ??

Vielen Dank im Voraus!

Antwort

0

Sie versuchen, direkt Schlüssel eine E-Mail aus dem Wörterbuch zuzugreifen:

So sollten Sie so etwas wie dies stattdessen in Ihrem do tun. während Sie zuerst auf Array aus dem Schlüssel "Mitarbeiter" & zugreifen müssen, dann müssen Sie Wert von "E-Mail" -Taste erhalten.

if let path = NSBundle.mainBundle().pathForResource("Employees", ofType: "json") { 
if let data = NSData(contentsOfFile: path) { 
    do { 
     let jsonResult: NSDictionary = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 

     if let error = jsonResult["error"] { 
      print("Error is: \(error)") 
     } else { 
      let person = jsonResult["employees"] as! NSArray 
      for i in 0..<person.count 
      { 
       let dict = person.objectAtIndex(i) as! NSDictionary 
       let strEmail = dict["email"] as! String 
       print(strEmail) 
      } 
     } 

    } catch let error as NSError { 
     print("Error is: \(error)") 
    } 

} 
+0

Bitte beachten Sie das Erklären, anstatt nur den Code auszugeben. Danke :) – Fennec

+0

Bitte beachten Sie die Erklärung für den Code –

5

"Passwort": „Passwort“

sollte

"Passwort": "Passwort"

Sie haben einen ungültigen Charakter anstelle eines "

Aktualisieren

Nachdem Sie Ihr ungültiges Zeichen korrigiert haben, können Sie auf Ihre Daten zugreifen. Aber du versuchst, als NSDictionary etwas zu erzeugen, das eigentlich ein Array ist, wenn ich an den JSON-Ausschnitt glaube, den du uns gezeigt hast.

if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [[String: String]] { 
    for jsonDictionary in jsonResult { 
     if let person = jsonDictionary["email"] { 
      print(person) 
     } 
    } 
} 

aktualisieren und beheben

if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String: AnyObject] { 
    if let employees = jsonResult["Employees"] as? [[String:String]] { 
     for employee in employees { 
      if let person = employee["email"] { 
       print(person) 
      } 
     } 
    } 
} 
+0

Dank @Eric D, aber ich kann hier nicht auf E-Mails zugreifen. –

+0

ich bekomme "Null" in if-Anweisung jsonResult ["email"] –

+1

@ S.Bharti Analysieren Sie die Struktur des JSON. '{}' repräsentiert ein Wörterbuch, '[]' ein Array. Das Wurzelobjekt ist ein Wörterbuch "Mitarbeiter" mit einem Array von Wörterbüchern mit den Mitarbeiterdaten. Und verwenden Sie Swift native Auflistungstypen anstelle der typenunspezifischen Foundation-Typen. – vadian

Verwandte Themen