JSON, Swift 4 UITable

xcode
ios

#1

Помогите разобраться с JSON. Пишу код без StoryBoard

  1. Есть файл JSON не могу вытащить от туда данные

  2. И как потом оттуда их добавить в table ?
    JSON file

     {  
      "anime":[
       {  
      "Name":"SAO",
      "Describe":"About Game",
      "Image":"Ссылка на файл",
      "videos":[  
         {  
            "Series1":"Ссылка на файл"
         },
         {  
            "Series2":"Ссылка на файл"
         }
      ]
    },
    {  
      "Name":"SAO2",
      "Describe":"About Game2",
      "Image":"Ссылка на файл",
      "videos":[  
         {  
            "Series1":"Ссылка на файл"
         },
         {  
            "Series2":"Ссылка на файл"
         }
      ]
    }
    ]
    }
    

Как пытался вытащит

 let jsonURL =  "Ссылка на файл" 
 guard let url = URL(string: jsonURL) else { return }
    URLSession.shared.dataTask(with: url) { (data, reponse, error) in
        guard let data = data else {return}
        do {
            let Anime = try JSONDecoder().decode(anime.self, from: data)
            print(Anime)
        }
        catch let jsonErr {
            print("Error: ", jsonErr)
        }
    }.resume()

anime.swift

struct anime: Decodable{
struct videos: Decodable {
    private enum CodingKeys : String, CodingKey {
        case Series1 = "Series1"
        case Series2 = "Series2"
    }
    let Series1: String
    let Series2: String
}
private enum CodingKeys : String, CodingKey {
    case Name = "Name"
    case Describe = "Describe"
    case Image = "Image"
    case Videos = "videos"
}
let Name: String
let Describe: String
let Image: String
let Videos: videos
}

#2

struct Model: Codable {
var animeModel: [AnimeModel]!
}

struct AnimeModel: Codable {
var Name: String?
var Describe: String?
var Image: String?
var videos: String?
}

Вызываешь
let anime = try JSONDecoder().decode(Model.self, from: data)

Вообще JSON у тебя тут кривой. Я показал пример как извлечь

“anime”:[
{
“Name”:“SAO”,
“Describe”:“About Game”,
“Image”:“Ссылка на файл”,
}

]


#3

Пишет: Model(animeModel: nil)


#4

struct CollectionTokenListModel: Codable {
var objects: [CollectionModel]?
var meta: MetaObjectModel?
}

struct MetaObjectModel: Codable {
var total_count: Int?
var previous: String?
var offset: Int?
var next: String?
var limit: Int?
}

struct CollectionModel: Codable {
var uuid: String?
var resource_uri: String?
var name: String?
var collection: String?
var token: String?
}

                if let jsonData = object.stringJSON?.data(using: .utf8) {
                    let collectionTokenListModel = try? JSONDecoder().decode(CollectionTokenListModel.self, from: jsonData)
                }

Вот мой парсинг, полностью рабочий.

Модель такая:

{
objects: [ {
uuid: …
resource_uri: …
name: …
collection: …
token: …
},
{
uuid: …
resource_uri: …
name: …
collection: …
token: …
}
],
meta: {
total_count: …
previous: …
offset: …
next: …
limit: …
}


#5

Это как пример. Почитай туториал про Codable и станет все понятно.