学生オブジェクトがある次の形式のJSONがあります。学生オブジェクトには、複数の学生がリストされています
Student {
student1: {
id: "12",
name: "jack",
},
student2: {
id: "2323",
name: "lewis"
},
student3: {
id: "1212",
name: "pint"
}
}
これを以下に示すような学生オブジェクトの配列に変換したいと思います。デコード可能を使用してこれを行うにはどうすればよいですか?
struct student: Decodable {
let name: String
let id: String
}
おそらくこれはあなたが望むものです:
let json = """
{
"student": {
"student1": {
"id": "12",
"name": "jack",
},
"student2": {
"id": "2323",
"name": "lewis"
},
"student3": {
"id": "1212",
"name": "pint"
}
}
}
"""
struct Student: Decodable {
let id: String
let name: String
}
struct StudentContainer: Decodable {
let students: [Student]
private enum CodingKeys: String, CodingKey {
case student
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
let studentsDict = try container.decode([String: Student].self, forKey: .student)
self.students = studentsDict.map { $0.value }
}
}
let result = try? JSONDecoder().decode(StudentContainer.self, from: json.data(using: .utf8)!)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加