prendre la JSON suivante:décodage d'un tableau imbriqué dans rapide 4
let rawJson =
"""
[
{
"id": 1,
"name":"John Doe"
},
{
"id": 2,
"name":"Luke Smith"
},
]
"""
et User
modèle:
struct User: Decodable {
var id: Int
var name: String
}
Il est assez simple à décoder, comme ceci:
let data = rawJson.data(using: .utf8)
let decoder = JSONDecoder()
let users = try! decoder.decode([User].self, from: data!)
Mais que se passe-t-il si le JSON ressemble à ceci, où le niveau supérieur est un dictionnaire et a besoin d'aller chercher le tableau de users
:
let json =
"""
{
"users":
[
{
"id": 1,
"name":"John Doe"
},
{
"id": 2,
"name":"Luke Smith"
},
]
}
"""
Quelle est la solution la plus efficace pour lire le JSON? Je pourrais certainement créer un autre struct
comme ceci:
struct SomeStruct: Decodable {
var posts: [Post]
}
et décoder comme ceci:
let users = try! decoder.decode(SomeStruct.self, from: data!)
mais il ne se sent pas bien le faire de cette façon, la création d'un nouvel objet modèle juste parce que le tableau est imbriqué dans un dictionnaire.
Vérifiez cet article sous la rubrique « clés wrapper ». Il semble que c'est la bonne façon d'analyser cette structure. http://benscheirman.com/2017/06/ultimate-guide-to-json-parsing-with-swift-4/ –