如何在 swift 4.2 中解析以下动态 JSON?

How to parse below dynamic JSON in swift 4.2?

{
  "payload": {
    “key1”: “value1”,
    “key2”: "{\"command\": \"playSound\",\"tone\": 0,\"delay\": 100000}”,
    “key3”: 0
  },
}

以上是我的响应数据,而 'payload' 是已知键,但在 'payload' 中所有键和值都是未知的。

例如'key1' 可以是任何名称,'key1' 的值可以是任何内容 (Int/String/Dictionary)。

我的代码如下所示,但它不起作用。

let decoder = JSONDecoder()
do {
    let dict = try! decoder.decode([String: Any].self, from: data!)
    complete(true, dict, nil)
}

有什么想法吗?

一个选择是回退到旧的 JSONSerialization,但缺点是您失去了对顶层已知键的 Decodable 支持。

另一种选择是实现外部对象(具有 payload 的对象)的 init(from: Decoder) 方法,并在那里手动解码字典。

或者您可以使用符合 Codable 的包装器来代替 Any。这里是one(免责声明:我是作者)。