我有一个看起来像这样的对象数组,我想解码
let accountPending = """
{
"blocks": {
"F143CCC051927EEF59EEA78D16D80F855052BBF159EA6602843904C9445": {
"amount": "10000000000000000000000000000000",
"source": "6xswkroybxydyzaxybb1h531sx34omiu7an9t9jy19f9mca7a36s7by5e"
},
}
}
""".data(using: .utf8)!
所以我正在尝试这些方面的东西
struct PendingBlock: Decodable {
let work: [String: PendingBlockData]
enum CodingKeys: String, CodingKey {
case work = "???"
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.work = try container.decode(Dictionary.self, forKey: .work)
}
struct PendingBlockData: Decodable {
let amount: String
let source: String
}
显然这不会起作用,因为 work
的字符串大小写不是真正的值 . 一位朋友建议使用 KeyedDecodingContainer
获取密钥,但不知道从哪里开始 . 在这里会有一些帮助 .
谢谢!
1 回答
您只需要将字典值struct定义为可解码,并使用String作为字典的键: