{
"payload": {
“key1”: “value1”,
“key2”: "{\"command\": \"playSound\",\"tone\": 0,\"delay\": 100000}”,
“key3”: 0
},
}
以上是我的响应数据,而“有效载荷”是已知键,但是在“有效载荷”中,所有键和值都是未知的。
例如'key1'可以是任何名称,'key1'的值可以是任何值(Int / String / Dictionary)。
我的代码如下所示,但是不起作用。
let decoder = JSONDecoder()
do {
let dict = try! decoder.decode([String: Any].self, from: data!)
complete(true, dict, nil)
}
有什么主意吗?
答案 0 :(得分:1)
一种选择是退回到旧的JSONSerialization
,但缺点是您失去了对顶层已知密钥的Decodable
支持。
另一种选择是对外部对象(具有init(from: Decoder)
的对象)实施payload
方法,并在那里手动解码字典。
或者您可以使用Codable
而不是Any
的包装器。这是one(免责声明:我是作者)。