Как разобрать ниже динамический JSON в swift 4.2? - PullRequest
0 голосов
/ 05 октября 2018
{
  "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)
}

Есть идеи?

1 Ответ

0 голосов
/ 05 октября 2018

Один из вариантов - вернуться к старому JSONSerialization, но недостатком является то, что вы потеряете поддержку Decodable для известных клавиш на верхнем уровне.

Другой вариант - реализовать init(from: Decoder) метод вашего внешнего объекта (тот, который имеет payload), и вручную расшифруйте словарь там.

Или есть Codable -конвертеры, которые можно использовать вместо Any.Вот один (отказ от ответственности: я автор).

...