При использовании протоколов Swift4 и Codable у меня возникла следующая проблема - похоже, нет способа разрешить JSONDecoder
пропускать элементы в массиве.
Например, у меня есть следующий JSON:
[
{
"name": "Banana",
"points": 200,
"description": "A banana grown in Ecuador."
},
{
"name": "Orange"
}
]
И Codable структура:
struct GroceryProduct: Codable {
var name: String
var points: Int
var description: String?
}
При декодировании этого JSON
let decoder = JSONDecoder()
let products = try decoder.decode([GroceryProduct].self, from: json)
Результат products
пуст. Что и следовало ожидать, из-за того, что второй объект в JSON не имеет ключа "points"
, в то время как points
не является обязательным в структуре GroceryProduct
.
Вопрос в том, как я могу разрешить JSONDecoder
"пропускать" недопустимый объект?