Что не так с функцией Codable? - PullRequest
       14

Что не так с функцией Codable?

0 голосов
/ 30 сентября 2019

Ниже приведен мой JSON:

{
   "Books":[
  {
     "title":"book title",
     "Contents":[
        {
           "figure":"Clause33",
           "url":"PressureReleifValve.html",
           "type":"video"
        }
     ]
  }
]
}

Вот структура: содержимое может содержать несколько элементов.

 struct Books: Codable {
      let title: String
      let contents: [Content]
  }
 struct Content: Codable {
      let figure, url, type: String
  }

Вот код:

guard let books = try? JSONDecoder().decode(Books.self, from: jsonData2) else {
    fatalError("The JSON information has errors")
  }

Что не так с моим кодом?

1 Ответ

1 голос
/ 30 сентября 2019

Проблема в модели. Используйте этот.

// MARK: - Books
struct Books: Codable {
    let books: [Book]

    enum CodingKeys: String, CodingKey {
        case books = "Books"
    }
}

// MARK: - Book
struct Book: Codable {
    let title: String
    let contents: [Content]

    enum CodingKeys: String, CodingKey {
        case title
        case contents = "Contents"
    }
}

// MARK: - Content
struct Content: Codable {
    let figure, url, type: String
}


do {
    let books = try JSONDecoder().decode(Books.self, from: jsonData)
} catch let error {
    // handle error
}

Вы можете скопировать и вставить свой JSON здесь https://app.quicktype.io,, он сгенерирует подходящую модель для вас.

...