Мне нужна помощь для разбора Json с Alamofire - PullRequest
0 голосов
/ 25 июня 2019

Я начинающий программист, и я не могу разобрать мой файл json.Я вижу данные в своей консоли, но мне нужна помощь, чтобы разобрать данные JSON.Я поделился своими данными JSON с URL, и я хотел бы разобраться с Alamofire.Я установил PodFile с Alamofite и SwiftyJSON.У меня нет ошибки, но мне нужна помощь для ее анализа.Также я создал строковые массивы для следующих данных.Я буду добавлять данные в массивы.

[
  {
    "id" : 1,
    "team" : "Liverpool",
    "players" : [
      {
        "id" : 2,
        "name" : "Alisson",
        "position" : "Goal Keeper",
        "number" : "13"
      },
      {
        "id" : 3,
        "name" : "Salah",
        "position" : "Forward",
        "number" : "10"
      }
    ],
    "trophies" : [
      "2019 champions league",
      "2005 champions league"
    ],
    "logoUrl" : "url"
  },
  {
    "id" : 4,
    "team" : "Real Madrid",
    "players" : [
      {
        "id" : 5,
        "name" : "Ramos",
        "position" : "Defender",
        "number" : "4"
      },
      {
        "id" : 6,
        "name" : "Benzema",
        "position" : "Forward",
        "number" : "9"
      }
    ],
    "trophies" : [
      "2018 champions league",
      "2017 champions league",
      "2016 champions league"
    ],
    "logoUrl" : "url"
  }
]



import Alamofire
import SwiftyJSON

func fetchJsonData(){
       DispatchQueue.main.async {
            Alamofire.request(url).responseData { response in
            guard let data = response.data else { return }
            do {
                let res = try JSONDecoder().decode([PageData].self, from:data)
                print(res)
            } catch  {
                print("having trouble converting it to a dictionary" , error)
            }
        }

        }
}

// this is my modal file

struct PageData: Codable { 
    let team: String
    let players: [Player]
    let trophies: [String]
    let logoUrlL: String 
}

struct Player: Codable {
    let id: Int 
    let name,position, number: String?
}

1 Ответ

0 голосов
/ 25 июня 2019

Вам необходимо responseData для использования JSONDecoder

Alamofire.request(url).responseData { response in 
    guard let data = response.data else { return } 
    do { 
        let res = try JSONDecoder().decode([PageData].self, from:data)
        print(res)
    } catch  {
        print("having trouble converting it to a dictionary" , error)
    }
}

Также players и trophies являются массивами

struct PageData: Codable { 
    let team: String
    let players: [Player]
    let trophies: [String]
    let logoUrlL: String 
}

struct Player: Codable {
    let id: Int 
    let name,position, number, type, quantity: String?
}
...