如何在 Swift 3 上从 JSON 获取每个数据?

How to get each data from JSON on Swift 3?

我正在数据库中注册用户的一些数据,然后 API returns 其他数据在 JSON usuario 中,如下所示:

我正在尝试从此 JSON 获取 idUsuario、nome 和 cpf 并打印以查看它们是否正确,但它们没有出现在控制台上!

@IBAction func botaoSalvar(_ sender: Any) {

    let nomeUsuario = self.campoUsuario.text;
    let cpf = self.campoCPF.text;
    let senha = self.campoSenha.text;

    let parameters = ["nome": nomeUsuario, "cpf": cpf, "senha": senha, "method": "app-set-usuario"]
    let urlPost = "http://easypasse.com.br/gestao/wsCadastrar.php"
    guard let url = URL(string: urlPost) else { return }
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")

    guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return }
    request.httpBody = httpBody

    let session = URLSession.shared
    session.dataTask(with: request) {
        (data, response, error) in

        if let data = data {
            do {
                let dadosJson = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject

                if let usuario = json["usuario"] as? [String: Any] {
                    let idUsuario = usuario["idUsuario"] as? Int
                    let nome = usuario["nome"] as? String
                    let cpf = usuario["cpf"] as? Int
                    print(idUsuario as! Int, nome as! String, cpf as! Int)
                }


            } catch {
                print(error)
            }
        }
    }.resume()

usuario的值是一个数组,请注意(,字典是{。将单数/复数混淆归咎于服务所有者。

这是您的代码,其中包含一些 swiftifications(原生集合类型和 no never .mutableContainers):

if let data = data {
        do {
            if let dadosJson = try JSONSerialization.jsonObject(with: data) as? [String:Any], 
               let usuarios = dadosJson["usuario"] as? [[String:Any]] {
                  for usuario in usuarios {
                     if let nomeUsuario = usuario["nome"] as? String {
                         print(nomeUsuario)
                     }
                     if let idUsuario = usuario["idUsuario"] as? Int { // can also be `String`
                         print(idUsuario)
                     }
                     if let cpf = usuario["cpf"] as? Int { // can also be `String`
                         print(cpf)
                     }
                  }
            }

        } catch {
            print(error)
        }
    }