почему JSONDecoder дает typeMismatch для действительного json - PullRequest
0 голосов
/ 28 марта 2020

Я использую JSONDecoder для преобразования JSON в объекты.

Вот код. Обычно это работает нормально.

         do{
                print("Hi")
                       if Data != nil{
                        let model =  try JSONDecoder().decode(Base.self, from: Data!)
                       }
            }
            catch{
                print("Error:\(error)")
            }

Но я получаю ниже Ошибка

Ошибка: typeMismatch (Swift.Double, Swift.DecodingError.Context (codingPath: [CodingKeys (stringValue: «rod», intValue) : nil), CodingKeys (stringValue: "nod", intValue: nil), _JSONKey (stringValue: "Index 0", intValue: 0), CodingKeys (stringValue: "meta", intValue: nil), CodingKeys (метка stringValue: " ", intValue: nil)], debugDescription:" Ожидается декодировать Double, но вместо этого найдена строка / данные. ", underError: nil))

Раньше все работало нормально. Любая помощь в решении этой проблемы будет принята

1 Ответ

0 голосов
/ 28 марта 2020

Проблема, похоже, связана с типом данных.

Вам нужно исследовать Декодируемый протокол в JSONDecoder (). Decode , который в вашем случае

Base.self

В основном один из членов мета-класса / структуры является Double , в то время как он должен быть String .

Я не делаю никаких объявление, но лично я нахожу https://app.quicktype.io/ простым в использовании, и это в основном безошибочно, когда речь идет о генерации Decodable протокола для любого JSON.

Я обычно копирую вставить мой JSON в QuickType, и он сгенерирует мне структуры для хранения моего значения JSON, и я скопирую и вставлю эти структуры в свой код

...