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=]
有两个严重的错误。
- 根对象是一个数组(由
[represCode].self
中的[]
表示)
- 值
AG
是键 CODE
的值
首先要符合命名约定,这样声明结构体
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"
我是 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=]
有两个严重的错误。
- 根对象是一个数组(由
[represCode].self
中的[]
表示) - 值
AG
是键CODE
的值
首先要符合命名约定,这样声明结构体
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"