JSON in Swift Struct
Codable Swift-Structs aus JSON generieren, kostenlos, in deinem Browser.
Wofür es gedacht ist
Von JSON zur Swift-Codable-Struct
Bereit für iOS und SwiftUI
Generiert Structs, die mit URLSession, Alamofire, SwiftUI und Combine kompatibel sind. Direkt in Xcode einfügen.
100% privat
Dein API-JSON verlässt deinen Browser nie. Keine Anmeldung, keine Telemetrie.
Korrektes Codable
Automatische CodingKeys für snake_case, Optional für Nullable-Felder, korrekte Typen (Int, Double, Bool). Idiomatischer Code.
Sofortig
Structs in Echtzeit generiert, während du tippst. Keine Buttons, kein Warten.
So funktioniert es
Drei Schritte, kein Aufwand
Dein JSON einfügen
Füge das JSON deiner API oder Web-Antwort ein. Funktioniert mit verschachtelten Objekten, Arrays und jeder gültigen JSON-Struktur.
Sofortige Generierung
Das Tool generiert automatisch Swift-Structs, die dem Codable-Protokoll entsprechen, mit CodingKeys wenn nötig.
Den Code kopieren
Kopiere die generierten Structs und verwende sie direkt in deinem iOS-, macOS- oder SwiftUI-Projekt.
FAQ
Noch Fragen?
Codable ist ein Typ-Alias, der in Swift 4 (WWDC 2017) eingeführt wurde und zwei Protokolle kombiniert: Encodable (kann in ein externes Format wie JSON konvertiert werden) und Decodable (kann aus einem externen Format erstellt werden). Ein Typ, der Codable entspricht, kann Daten sowohl serialisieren als auch deserialisieren. Die Konformität wird automatisch durch Compiler-Synthese erreicht, wenn alle Properties ebenfalls Codable entsprechen.
Für JSON-Datenmodelle werden Structs aus mehreren Gründen bevorzugt: Structs sind Werttypen (sie kopieren statt referenzieren), was Probleme mit gemeinsam genutztem Zustand vermeidet; der Compiler kann sie besser optimieren; und in SwiftUI funktionieren Structs besser mit dem reaktiven Datenmodell. Klassen (Referenztypen) haben ihren Platz, wenn du Vererbung oder Objektidentität benötigst, aber für API-Modelle sind Structs die empfohlene Praxis.
CodingKeys ist ein verschachteltes Enum, das Swift-Property-Namen auf Schlüsselnamen im JSON abbildet. Es wird benötigt, wenn JSON-Namen (typischerweise snake_case in REST-APIs) von Swifts Konventionen (camelCase) abweichen. Wenn das JSON beispielsweise first_name hat, bildet der CodingKey diesen Schlüssel auf das Feld firstName der Struct ab. Ohne CodingKeys erwartet Swift, dass die JSON-Namen genau mit den Property-Namen übereinstimmen.
In Swift kann ein Optional-Typ (mit ? markiert) einen Wert haben oder nil sein. Wenn ein JSON-Feld fehlen oder null sein kann, wird die Struct-Property als Optional deklariert: var email: String? statt var email: String. Foundations JSONDecoder behandelt die Deserialisierung automatisch: Fehlt der Schlüssel im JSON oder ist sein Wert null, wird die Property auf nil gesetzt, ohne einen Fehler auszulösen.
Der typische URLSession + Codable-Ablauf ist: URLSession.shared.dataTask gibt Data zurück; JSONDecoder().decode(MyStruct.self, from: data) konvertiert die Daten in die Struct; das Ergebnis wird auf dem Hauptthread in der UI verwendet. Mit Swift 5.5+ und async/await verwende let data = try await URLSession.shared.data(for: request) gefolgt von let object = try JSONDecoder().decode(MyStruct.self, from: data). Dieses Muster ist das Fundament jeder API-Integration im modernen iOS.
Swift für iOS/macOS, das Codable-Protokoll (2017) und API-Integration mit SwiftUI
Swift wurde von Apple auf der WWDC 2014 als Nachfolger von Objective-C für die App-Entwicklung auf iOS, macOS, watchOS und tvOS vorgestellt. Mit der Einführung von Codable in Swift 4 (WWDC 2017) wurde die Arbeit mit JSON radikal vereinfacht. Vor Codable verwendeten Entwickler Drittanbieter-Bibliotheken wie SwiftyJSON oder Alamofires Codable-Erweiterungen. Mit nativem Codable benötigst du nur JSONDecoder und gut typisierte Structs, ohne externe Abhängigkeiten.
SwiftUI, auf der WWDC 2019 eingeführt, stärkte die Verwendung von Structs als Datenmodelle. SwiftUIs auf Werttypen basierende Architektur und das View-Protokoll als Struct passen perfekt zu Codable-Modellen. Muster wie MVVM (Model-View-ViewModel) in SwiftUI verwenden @Published in ObservableObject-ViewModels mit Codable-Structs als Modelle und schaffen einen vorhersehbaren und testbaren Datenfluss.
Mit Swift 5.5 (WWDC 2021) und der Einführung von async/await wurde das Konsumieren von REST-APIs noch sauberer. URLSession.shared.data(for:) ist jetzt eine async-Funktion, die verschachtelte Completion-Handler (Callback-Hell) eliminiert. In Kombination mit JSONDecoder umfasst das vollständige Fetch + Decode-Muster nur 3 Codezeilen. Dieses Tool generiert die für dieses Muster benötigten Codable-Structs und verarbeitet alles in deinem Browser, ohne deine Daten an irgendeinen Server zu senden.