Lors de l'utilisation de protocoles Swift4 et Codable, j'ai rencontré le problème suivant: il semble qu'il n'y ait aucun moyen de permettre à JSONDecoder d'ignorer des éléments dans un tableau. Par exemple, j'ai JSON suivant:Les matrices de décodage Swift JSONDecode échouent si le décodage d'un seul élément échoue
[
{
"name": "Banana",
"points": 200,
"description": "A banana grown in Ecuador."
},
{
"name": "Orange"
}
]
Et codable struct:
struct GroceryProduct: Codable {
var name: String
var points: Int
var description: String?
}
Lors du décodage de cette JSON
let decoder = JSONDecoder()
let products = try decoder.decode([GroceryProduct].self, from: json)
résultant products
est vide. Ce qui est à prévoir, en raison du fait que le deuxième objet dans JSON n'a pas de clé "points"
, tandis que points
n'est pas facultatif dans GroceryProduct
struct.
Comment puis-je autoriser JSONDecoder à "ignorer" un objet non valide?
Nous ne pouvons pas ignorer les objets non valides mais vous pouvez attribuer des valeurs par défaut si elle est nulle. –