Swift: JSONDecoder + Кодируемый - PullRequest
0 голосов
/ 02 июля 2018

У меня есть три класса, которые я хочу проанализировать из json, которые я получаю с сервера. структура json является токовой.

эти классы:

public class HmoModel: Codable {
    private var Id: Int
    private var Name: String
}

public class SplashModel: Codable {
    public var Hmos: [HmoModel]!
}

public class PatientSplashModel: SplashModel {
    public var StressorsAnswers: [StressorsAnswerModel]!
}

Я пытаюсь разобрать json следующим образом:

do {
    let patientSplash = try self.decoder.decode(PatientSplashModel.self, from: response.data)
} catch {
    listener.onException(error)
}

но у пациента Splash все равно нулю.

Я получаю JSON, используя SwiftHTTP, как это

HTTP.GET(ServerPatientApi.SPLASH, parameters: nil) { response in
            if let error = response.error {
                listener.onException(error)
                return;
            }

            DispatchQueue.main.async (execute: {
                do {
                    listener.onSplashLoaded(try self.decoder.decode(PatientSplashModel.self, from: response.data))
                } catch {
                    listener.onException(error)
                }
            })
        }

Как это исправить? Горячо ли разбирать декодер на json?

Спасибо!

1 Ответ

0 голосов
/ 02 июля 2018

пожалуйста, добавьте Codingkeys enum в ваши кодируемые классы, чтобы кодируемые могли получать объекты по ключу, например

public class HmoModel: Codable {
    private var Id: Int
    private var Name: String
    private enum CodingKeys: String, CodingKey {
       case Id="id"
       case Name="name"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...