'Любой?' не соответствует «декодируемому»

У меня есть DataModel тип данных:

class DataModel: Decodable {
    var data : Any?
    var name : String?
}

json-сервер:

{
   "data":"success",
   "name":"john"
}

or

{
    "data": {
        "result": {
            "shopcode": 0,
            "shopname": ""
        }
    },
    "name": "john"
}

тип свойства data я не уверен, иногда бывает [String: Any] или String или null.
Я ищу какой-то ответ, но он мне не нужен, поэтому, пожалуйста, не задавайте вопрос [дубликат]
Как декодировать свойство с типом любого произвольного словаря JSON в декодируемом протоколе Swift 4
Any при декодировании JSON с помощью Codable?

Как это решить? Есть ли способ разрешить декодеру свойств данных [String: Any], String, nil?

английский не мой родной язык; пожалуйста извините за опечатки


person Karim    schedule 04.04.2018    source источник
comment
Any нельзя использовать в протоколе Codable, так как он требует предварительной информации о типе. проверить ответ   -  person staticVoidMan    schedule 04.04.2018
comment
Поделитесь с нами, как data выглядит в обоих случаях: как String и как [String:Any]   -  person staticVoidMan    schedule 04.04.2018
comment
Codable опирается на конкретные типы. Если JSON содержит разные типы для ключа, вам нужно написать собственный инициализатор, который обрабатывает случаи.   -  person vadian    schedule 04.04.2018
comment
@vadian да, я так думаю. Возможно, я могу написать расширение или написать Decodable, чтобы решить эту проблему.   -  person Karim    schedule 04.04.2018