Swift:从 JSON 中获取值

Swift: Get value from a JSON

我是 swift 的新手,这是我的第一个 iOs 应用程序 我想从 http POST response

中检索一个值
struct represCode: Codable{
       var CODE: String?
   }
   
   var table = [represCode]()

func httpPost(completion: @escaping (_ json: Any?)->()) {
       let json: [String: Any] = ["login": usernameText.text!.uppercased(),
                                  "pass": mdpText.text!]
       
       let urlPath = url.chaine + "login.php"
       let jsonData = try? JSONSerialization.data(withJSONObject: json)
       let url = URL(string: urlPath)!
       var request = URLRequest(url: url)

       request.httpMethod = "POST"

       // insert json data to the request
       request.httpBody = jsonData

       let task = URLSession.shared.dataTask(with: request) { data, response, error in
           guard let data = data, error == nil else {
               print(error?.localizedDescription ?? "No data")
               return
           }
           do {
               self.table = try JSONDecoder().decode([represCode].self, from: data)
               print(self.table)
               self.dl = true
               }catch _ {
                   print ("JSON Error")
           }
           completion(json)
       }
       task.resume()
     }

当我“打印(self.table)”时,我得到这个

[Mobois.LoginViewController.represCode(CODE: Optional("AG"))]

我想将“AG”存储在特定的变量中(例如:var represCode: String?)

我尝试了很多在这里找到的解决方案,但大多数时候我都会收到类似“无法将类型 '[LoginViewController.represCode]' 的值分配给类型 'String'”之类的错误“=14=]

有两个严重的错误。

  1. 根对象是一个数组(由[represCode].self中的[]表示)
  2. AG 是键 CODE
  3. 的值

首先要符合命名约定,这样声明结构体

struct RepresCode: Decodable {
    let code: String

    private enum CodingKeys: String, CodingKey { case code = "CODE" }
}

var table = [RepresCode]()
..
JSONDecoder().decode([RepresCode].self ...

您可以通过获取数组中 first 项的 属性 code 的值来访问该值

let represCode = table.first?.code ?? "unknown code"