2016-10-29 5 views
-1

Gibt es eine Möglichkeit, ein JSON in Swift richtig zu deserialisieren, dass diese Struktur ist?Deserialize JSON in Swift

{ 
Usuario =  (
      { 
     "picture_url" = ""; 
     id = 229; 
     name = "ABC"; 
    } 
);} 

Getestet habe ich diese mit jsonHelper Bibliothek

let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers) 
let jsonString = jsonData 
var mstemp = [usuario]() 
mstemp <-- jsonString 

aber nur für jsons diese Struktur arbeitete

{"name": "myUser", "id": "1","picture_url": ""} 

aktualisieren

Code:

let urlFinal = URLSERVIDOR+"/ws/rest/Geral/consultaUsuario?token=\(validotoken)&email=\(validoEmail)&senha=\(SenhaCriptada)" 
let jsonUrl = urlFinal 
let session = NSURLSession.sharedSession() 
let shotsUrl = NSURL(string: jsonUrl) 

let task = session.dataTaskWithURL(shotsUrl!) {data, response, error in 
    guard data != nil else { 
     falha() 
     return 
    } 

    do { 
     let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers) 
     let jsonString = jsonData 
     var mstemp = [usuario]() 
     mstemp <-- jsonString 
     dispatch_async(dispatch_get_main_queue(),{ 
      sucesso(usuarioBaixado: mstemp) 
     }); 
    } catch _ { 
     falha() 
    } 
} 
task.resume() 
+0

Was wollen Sie tun? 'jsonData' ist ein Wörterbuch, das die geparsten JSON-Daten enthält. – rmaddy

+0

Ich muss die JSON-Daten lesen, zum Beispiel ... print (user.name) @rmaddy –

+1

OK, was hält dich davon ab, das zu tun? Wissen Sie, wie Sie auf Werte aus einem Swift-Wörterbuch zugreifen können? 'jsonData' ist nur ein einfaches altes Swift-Wörterbuch. Sie greifen auf seine Daten wie jedes andere Wörterbuch zu. – rmaddy

Antwort

0

Versuchen Sie folgendes:

URLSession.shared.dataTask(with: shotsUrl!) { 
    (data, response, error) in 

    guard data != nil else { 
     return 
    } 

    guard let json = try? JSONSerialization.jsonObject(with: data!, options: []) as! [String: AnyObject], 
     let usuario = json["Usuario"] as! AnyObject else { 
      return 
    } 
    print ("Usuario:\n\t\(usuario["id"] as! Int)") 
    print ("\t\(usuario["name"] as! String)") 
    print ("\t\(usuario["picture_url"] as! String)") 
}