如何在 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(免责声明:我是作者)。
{
"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(免责声明:我是作者)。