如何在swift4中解析对象内部的JSON数组

时间:2018-10-22 11:23:15

标签: ios json swift

我正在使用tableview解析JSON数据。在tableview中成功解析了tableview中的数据后,我的问题是用户单击tableview单元格以传递到详细信息ViewController。但是问题是我无法在

中的详细信息ViewController中解析JSON

这是我的JSON外观

[
{
    "id": "263",
    "userId": "2692"
 }
 ]

这是我的代码

  guard let url = URL(string: URL API) else { return }
    var request = URLRequest(url: url)
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("Bearer \(AccessToken!)", forHTTPHeaderField: "Authorization")
    request.httpMethod = "GET"

    let session = URLSession.shared
    session.dataTask(with: request) { (data, response, error) in 
    do {
            let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [string: anyobject]

                print(json)
         label.text = json["id"] as? string

        }catch {


        }

 }.resume()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

2 个答案:

答案 0 :(得分:0)

请尝试使用此代码

do {
   if let json = try JSONSerialization.jsonObject(with: data!) as? [[String: String]] {
      for data in json {

          label.text  = data["id"] as? String
      }
   }
} catch { print(error) }

答案 1 :(得分:0)

使用Codable协议在swift4中解析json。 像这样声明您的模型:

struct Model: Codable {
    let id: Double
    let userId: Double

    enum CodingKeys : String, CodingKey {
        case id = "id"
        case userId = "userId"
    }
}

然后,在获取数据后,使用此:

do {
    let arrayValue = try JSONDecoder().decode([Model], from: data)
} 
catch {
}

请注意,您的json是数组而不是字典!