Как разобрать массив JSON внутри объекта в swift4 - PullRequest
0 голосов
/ 22 октября 2018

Я использую tableview для анализа данных JSON.данные анализа в табличном представлении успешно проанализированы в моем tableView, но проблема заключается в том, что пользователи щелкают ячейку табличного представления, чтобы перейти к деталям ViewController. Но проблема в том, что я не могу разобрать JSON в деталях ViewController в

вот мой 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 голосов
/ 22 октября 2018

Разбор json в swift4 с использованием протокола Codable.объявите вашу модель следующим образом:

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 - это массив, а не словарь!

0 голосов
/ 22 октября 2018

Пожалуйста, попробуйте этот код

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) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...