首页 > 解决方案 > 如何快速解码具有动态键值的json?

问题描述

我在快速正确构建我的 Codable 模型时遇到了一些麻烦。我有一个 json,它可以具有动态 id 键值和一个我知道的键值始终相同。如何处理动态 id 值?从我的研究来看,我似乎需要一个自定义解码器初始化,但我不相信我做的 100% 正确。谢谢你。

示例 json:

{
  "1f73433230": "Clark Kent",
  "f1c3432fd6": "Batman",
  "3d34457d69": "Wonder Woman",
  "OTHER_ID": "Other"
}

代码

struct SuperHeroIds: Codable, Equatable {
    let id: String
    let otherId: String
    
    enum CodingKeys: String, CodingKey {
        case otherID = "OTHER_ID"
    }
    
    init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        otherId = try container.decode(String.self, forKey: .otherID)
        
        id = String()
      
        ???
    }
}

标签: iosswift

解决方案


我会选择

let res = try JSONDecoder().decode([String:String].self, from:data)

推荐阅读