0
{
  "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)
}

任何想法?

4

1 回答 1

2

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

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

或者Codable,您可以使用符合标准的包装器来代替Any. 这是一个(免责声明:我是作者)。

于 2018-10-05T07:41:27.750 回答