如何在swift 4.2中解析下面的动态JSON?
上面是我的响应数据,而“payload”是已知的键,但在“payload”中,所有键和值都是未知的 e、 g.“key1”可以是任何名称,“key1”的值可以是任何内容(Int/String/Dictionary) 我的代码如下所示,但不起作用如何在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": {
“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)
}