相关疑难解决方法(0)

Swift Codable - 解析可以包含不同数据类型的 JSON 数组

我正在尝试解析一个 JSON 数组,它可以是

{
  "config_data": [
      {
        "name": "illuminate",
        "config_title": "Blink"
      },
      {
        "name": "shoot",
        "config_title": "Fire"
      }
    ]
}
Run Code Online (Sandbox Code Playgroud)

或者它可以是以下类型

{
  "config_data": [
          "illuminate",
          "shoot"
        ]
}
Run Code Online (Sandbox Code Playgroud)

甚至

{
    "config_data": [
              25,
              100
            ]
  }
Run Code Online (Sandbox Code Playgroud)

所以为了使用 JSONDecoder 解析这个,我创建了一个结构如下 -

Struct Model: Codable {
  var config_data: [Any]?

  enum CodingKeys: String, CodingKey {
    case config_data = "config_data"
   }

  init(from decoder: Decoder) throws {
    let values = try decoder.container(keyedBy: CodingKeys.self)
    config_data = try values.decode([Any].self, forKey: .config_data)
  }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为Any不确认可解码协议。这可能是什么解决方案。数组可以包含任何类型的数据

swift swift4 jsondecoder

6
推荐指数
1
解决办法
1979
查看次数

标签 统计

jsondecoder ×1

swift ×1

swift4 ×1