/ / Niepowodzenie inicjalizatora dla Swift Decodable - json, swift, decodable

Niepowtarzalny inicjator dla Swift Decodable - json, swift, decodable

Próbuję przeanalizować następujący schemat JSON, plakat może, ale nie musi być pusty

{
"poster": {},
"recommends": []
}

Moje klasy dekodowalne są następujące:

public struct RecommendedList: Decodable {
public let poster: Poster?
public let recommends: [Recommend]
}

public struct Poster: Decodable {
public let backgroundImage: URL
public let topImage: URL
public let windowImage: URL
public let windowSkinImagePath: URL
public let deeplink: URL

public init(from decoder: Decoder) throws {
// I want a failable intializer not one that throws
}
}

Moje pytanie brzmi: jak sprawić, by plakat był opcjonalny? Myślałem, że będę potrzebować inicjalizatora, który może ulec awarii, ale dekodowalny wymaga inicjującego, który rzuca.

Odpowiedzi:

0 dla odpowiedzi № 1

więc wygląda na to, że musiałem spróbować? na liście polecanych init (z dekodera :)

public struct RecommendedList: Decodable {
public let poster: Poster?
public let recommends: [Recommend]

enum CodingKeys: String, CodingKey {
case poster
case recommends
}

public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
poster = try? container.decode(Poster.self, forKey: .poster)
recommends = try container.decode([Recommend].self, forKey: .recommends)
}
}