在 swift 中反序列化 JSON

Deserialize JSON in swift

有没有办法正确反序列化 swift 中的 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

但只适用于 json 这个结构

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

更新

代码:

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()

试试这个:

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