如何解决Swift-使用可解码的工具将嵌套对象转换为对象数组
我有以下格式的JSON,其中有一个Student对象。学生对象中列出了多个学生
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)!)
,
抱歉,我读错了一点,所以我会再去。
要创建一个数组,您可以执行以下操作:
List<User> users = List();
var DataUser = [
{"id": 1,"name": "Leanne"},{"id": 2,"name": "Graham"}
];
List<User> getUsersFromJson() {
// iterate through the list of json
for (var json in DataUser)
// add the user object to your list
users.add(User.fromJson(json));
// return the list of users
return users;
}
这足以将学生编码为一个数组。只需使用struct Students: Codable {
let students: [Student]
}
struct Student: Codable {
let name: String
let id: String
}
传递JSON数据即可。
您将必须稍微编辑JSON,如下所示:
Students
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。