Swift Codable und das CodingKeys-Muster
Swifts Codable-Protokoll (ein Typ-Alias für Encodable & Decodable) ist der Standard-Weg JSON zu parsen. Der Generator erzeugt struct- oder class-Typen die Codable konform sind mit einem CodingKeys-Enum wenn Eigenschaftsnamen von JSON-Schlüsseln abweichen. Swift-Namenskonvention verwendet lowerCamelCase für Eigenschaften, also wird "first_name" in JSON zu firstName in Swift, mit einem CodingKeys-Case der beide verknüpft.
Das Typ-Mapping folgt Swift-Konventionen: JSON-Zeichenketten werden zu String, Ganzzahlen zu Int, Dezimalzahlen zu Double, Booleans zu Bool und Arrays zu [T]. Verschachtelte Objekte generieren eigene benannte Struct-Typen. JSON-null und fehlende Felder werden zu Optional (T?) mit Standardwert nil im Initialisierer.
Der Generator kann entweder struct- (Werttyp, Standard) oder class- (Referenztyp) Deklarationen ausgeben. Structs werden in Swift für Datenmodelle bevorzugt weil sie Wertsemantik haben, automatisch thread-sicher sind und Retain-Zyklen vermeiden.
CodingKeys, Custom Decoder und Datums-Handling
Wenn ein Eigenschaftsname in einer Swift-Struct von seinem JSON-Schlüssel abweicht, wird ein CodingKeys-Enum generiert das das Mapping für jede Eigenschaft auflistet. Das ist der Standard-Swift-Ansatz der mit JSONDecoder kompatibel ist.
Eine Alternative ist keyDecodingStrategy auf JSONDecoder auf .convertFromSnakeCase zu setzen, was die Notwendigkeit von CodingKeys eliminiert wenn die einzigen Unterschiede snake_case vs. camelCase sind. Der Generator kann einen entsprechenden Kommentar ausgeben.
JSON-Datums-Zeichenketten sind eine häufige Herausforderung. Der Generator typisiert Datumsfelder standardmäßig als String, aber ein Toggle wechselt sie zu Date und gibt einen Hinweis aus dateDecodingStrategy auf JSONDecoder zu setzen.
iOS- und SwiftUI-Entwicklungs-Workflows
iOS-Entwickler die URLSession oder Alamofire verwenden parsen API-Antworten mit JSONDecoder().decode(MyModel.self, from: data). Der Generator erzeugt den MyModel-Typ den Sie benötigen, mit allen verschachtelten Typen in derselben Datei.
SwiftUI verwendet @Published-Eigenschaften und ObservableObject-Klassen um die UI von Datenmodellen zu steuern. Der Generator kann optional die Root-Struct in eine ObservableObject-Klasse mit @Published-Eigenschaften einwickeln.
Combine- und async/await-Netzwerkcode in modernen iOS-Apps verlässt sich auf gut typisierte Modellobjekte. Die hier generierte Codable-Konformität integriert sich direkt mit URLSession.shared.data(from:) und JSONDecoder.