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

如何在swift 4.2中解析下面的动态JSON?,swift,jsondecoder,Swift,Jsondecoder,上面是我的响应数据,而“payload”是已知的键,但在“payload”中,所有键和值都是未知的 e、 g.“key1”可以是任何名称,“key1”的值可以是任何内容(Int/String/Dictionary) 我的代码如下所示,但不起作用 { "payload": { “key1”: “value1”, “key2”: "{\"command\": \"playSound\",\"tone\": 0,\"delay\": 100000}”, “key3”: 0

上面是我的响应数据,而“payload”是已知的键,但在“payload”中,所有键和值都是未知的

e、 g.“key1”可以是任何名称,“key1”的值可以是任何内容(Int/String/Dictionary)

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

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

有什么想法吗?

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

另一个选项是实现外部对象(具有
有效负载的对象)的
init(from:Decoder)
方法,并在那里手动解码字典


或者有
可编码的
兼容包装,您可以使用它来代替
任何
。这里是(免责声明:我是作者)。

一个选择是退回到旧的
json序列化
,但缺点是您失去了对顶层已知键的
可解码
支持

另一个选项是实现外部对象(具有
有效负载的对象)的
init(from:Decoder)
方法,并在那里手动解码字典


或者有
可编码的
兼容包装,您可以使用它来代替
任何
。以下是(免责声明:我是作者)。

请看这个问题:@leparlon,这没有帮助。该问题/答案具有静态json,它将始终具有相同的密钥集和2个可选密钥。此问题是关于具有未知值类型的未知键。请参阅此问题:@leparlon,这没有帮助。该问题/答案具有静态json,它将始终具有相同的密钥集和2个可选密钥。此问题涉及具有未知值类型的未知键。
let decoder = JSONDecoder()
do {
    let dict = try! decoder.decode([String: Any].self, from: data!)
    complete(true, dict, nil)
}