← Alle Tools Code Gen

JSON zu Swift Struct Generator

JSON einfügen und sofort Swift-Codable-Structs für iOS, macOS und SwiftUI erhalten.

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.

FAQ

Werden meine Daten an einen Server gesendet?

Nein. Die gesamte Verarbeitung findet vollständig in Ihrem Browser statt. Ihr JSON verlässt Ihr Gerät nie.

Soll ich struct oder class als Ausgabe verwenden?

Verwenden Sie struct (Standard) für reine Datenmodelle — das ist idiomatisches Swift. Verwenden Sie class wenn Sie Vererbung, @objc-Interop oder Referenzsemantik benötigen.

Wie werden Swift-reservierte Wörter als Eigenschaftsnamen behandelt?

Swift-reservierte Wörter wie "class", "struct", "enum", "func" und "let" werden mit Backticks escaped (z.B. `class`) als Eigenschaftsnamen, und ein CodingKeys-Eintrag mappt sie auf den ursprünglichen JSON-Schlüssel.

Werden tief verschachtelte Strukturen unterstützt?

Ja. Jedes verschachtelte JSON-Objekt wird zu seinem eigenen benannten Swift-Typ. Alle Typen werden in einer Datei in Abhängigkeitsreihenfolge ausgegeben.

Kann ich SwiftyJSON-kompatible Modelle generieren?

Der Generator zielt auf native Swift-Codable-Ausgabe ab, dem modernen Standard. SwiftyJSON ist ein Legacy-Ansatz; Codable-Structs sind performanter, typsicherer und benötigen die SwiftyJSON-Abhängigkeit nicht.

Ähnliche Tools