【发布时间】:2020-02-04 13:35:33
【问题描述】:
我有一个在根级别有 ID 的 JSON:
{
"12345": {
"name": "Pim"
},
"54321": {
"name": "Dorien"
}
}
我的目标是使用 Codable 创建一个包含名称和 ID 属性的用户对象数组。
struct User: Codable {
let id: String
let name: String
}
我知道如何使用 Codable with a single root level key 并且我知道如何工作 with unknown keys。但我在这里尝试做的是两者的结合,我不知道下一步该做什么。
这是我目前得到的:(您可以将其粘贴到 Playground 中)
import UIKit
var json = """
{
"12345": {
"name": "Pim"
},
"54321": {
"name": "Dorien"
}
}
"""
let data = Data(json.utf8)
struct User: Codable {
let name: String
}
let decoder = JSONDecoder()
do {
let decoded = try decoder.decode([String: User].self, from: data)
decoded.forEach { print($0.key, $0.value) }
// 54321 User(name: "Dorien")
// 12345 User(name: "Pim")
} catch {
print("Failed to decode JSON")
}
这就是我想做的:
let decoder = JSONDecoder()
do {
let decoded = try decoder.decode([User].self, from: data)
decoded.forEach { print($0) }
// User(id: "54321", name: "Dorien")
// User(id: "12345", name: "Pim")
} catch {
print("Failed to decode JSON")
}
非常感谢任何帮助。
【问题讨论】:
标签: swift codable decodable jsondecoder