2016-06-14 19 views
0

ich die folgende json scheinen könnte zu analysieren:Parse verschachtelte Elemente in JSON

["data": { 
    companies =  (
    ); 
    "login_status" = success; 
    "rs_customer" =  { 
     id = "<null>"; 
     name = "<null>"; 
     status = "<null>"; 
    }; 
    user =  { 
     email = "[email protected]"; 
     id = 0; 
     lastlogin = "06/14/16 12:44 am"; 
     name = "Jayson Tamayo"; 
     password = mypassword; 
     phone = "112345"; 
    }; 
}, "status": success] 

ich abrufen, dass JSON durch:

HTTPGetJSON("http://myurl.com") { 
       (data: Dictionary<String, AnyObject>, error: String?) -> Void in 
       if error != nil { 
        print(error) 
       } else { 
        print(data) 
        let status = data["status"] as? String 
        print(status) 

       } 
      } 

Als ich den "Status" drucken es funktioniert. Aber wenn ich versuche, Daten ["Name"] zu verwenden, bekomme ich Null. Ich habe auch versucht Daten ["Daten"] ["Name"], aber ich bekomme auch Null.

+0

versuchen Sie Daten ["Benutzer"] ["Name"]. –

+0

Ich bekomme 'fataler Fehler: unerwartet gefunden Null beim Entpacken ein optionaler Wert' –

+2

versuchen Sie Daten [" Daten "] [" Benutzer "] [" Name "] sollte dies funktionieren. –

Antwort

0

Ihr Hauptgegenstand ist ein Wörterbuch.

Im Schlüssel "data" gibt es mehrere Werte: "companies" ist ein Array, "rs_customer" ist ein Dictionary, der Status ist Strings und "user" ist ein Dictionary.

Also, um den Benutzer zu erhalten, würden Sie nur an den richtigen Typen werfen müssen, so etwas wie, wenn data das Objekt wir in der Frage sehen:

if let content = data["data"] as? [String:AnyObject] { 
    if let user = content["user"] as? [String:AnyObject] { 
     if let name = user["name"] as? String { 
      print(name) 
     } 
    } 
} 

Sie auch die Auswickeln Kette für einfacheren Code:

if let content = data["data"] as? [String:AnyObject], 
     user = content["user"] as? [String:AnyObject], 
     name = user["name"] as? String { 
    print(name) 
} 
+0

Wie ist das Unternehmen ein Array @EricD? "Daten" selbst ist ein Array oder? – Dershowitz123

+0

@ Dershowitz123 Das Ganze ist ein Wörterbuch, und das "Daten" -Feld ist auch ein Wörterbuch. Nur "Firmen" ist ein Array. – Moritz

+0

Ich weiß, dass dies off Thema klingen kann, aber wenn Sie uns zeigen könnten, wie Elemente wie ein Array oder ein Wörterbuch in einem JSON behandelt werden, wäre es wirklich hilfreich. Bitte teilen Sie Ihr Fachwissen mit uns. – Dershowitz123