I-Struktur wie dieses:Convert erhalten Int Dekodieren von JSON in Bool Kodierbare mit
struct JSONModelSettings {
let patientID : String
let therapistID : String
var isEnabled : Bool
enum CodingKeys: String, CodingKey {
case settings // The top level "settings" key
}
// The keys inside of the "settings" object
enum SettingsKeys: String, CodingKey {
case patientID = "patient_id"
case therapistID = "therapist_id"
case isEnabled = "is_therapy_forced"
}
}
extension JSONModelSettings: Decodable {
init(from decoder: Decoder) throws {
// Extract the top-level values ("settings")
let values = try decoder.container(keyedBy: CodingKeys.self)
// Extract the settings object as a nested container
let user = try values.nestedContainer(keyedBy: SettingsKeys.self, forKey: .settings)
// Extract each property from the nested container
patientID = try user.decode(String.self, forKey: .patientID)
therapistID = try user.decode(String.self, forKey: .therapistID)
isEnabled = try user.decode(Bool.self, forKey: .isEnabled)
}
}
und JSON in diesem Format (Struktur verwendeten Schlüssel ziehen aus ohne zusätzliche Wrapper Einstellung):
{
"settings": {
"patient_id": "80864898",
"therapist_id": "78920",
"enabled": "1"
}
}
Frage ist, wie kann ich konvertieren "isEnabled" zu Bool, (1 oder 0 von API bekommen) Wenn ich versuche zu antworten Antwort im bekommen Fehler: "Erwartet, Bool zu dekodieren, aber eine Zahl stattdessen gefunden."
Warum wrappen Sie 'forKey: .isEnabled 'nicht innerhalb einer Funktion, die ein bool' true' für eine 1 und 'false' für 0 zurückgibt? – Fabien