2016-10-29 7 views
-1

jsonを適切に非直列化する方法はありますか?スワップでJSONを逆シリアル化する

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

私はjsonHelperライブラリ

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

でこれをテストしただけ更新

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

jsonsため

コードこの構造を働いた:

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

何をしようとしますか? 'jsonData'は、解析されたJSONデータを含む辞書になります。 – rmaddy

+0

例えば、jsonのデータを読む必要があります。print(user.name)@rmaddy –

+1

OK、何をやっているのですか?スウィフト辞書から値にアクセスする方法を知っていますか? 'jsonData'は普通のSwift辞書です。他の辞書と同様にそのデータにアクセスします。 – rmaddy

答えて

0

これを試してみてください:

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)") 
}