DocumentsImagesMédiasOutils PDF

JSON en Swift Struct en Ligne

Génère des structs Swift Codable depuis un JSON, gratuit, dans ton navigateur.

Processed in your browser

De JSON à Swift Struct Codable

Prêt pour iOS et SwiftUI

Génère des structs compatibles avec URLSession, Alamofire, SwiftUI et Combine. Colle directement dans Xcode.

100 % privé

Ton JSON d'API ne quitte jamais ton navigateur. Aucune inscription, aucune télémétrie.

Codable correct

CodingKeys automatique pour le snake_case, Optional pour les nullables, types corrects (Int, Double, Bool). Code idiomatique.

Instantané

Structs générés en temps réel pendant que tu tapes. Aucun bouton, aucune attente.

Trois étapes, sans complications

1

Colle ton JSON

Colle le JSON de ton API ou réponse web. Fonctionne avec les objets imbriqués, les tableaux et toute structure JSON valide.

2

Génération instantanée

L'outil génère automatiquement des structs Swift conformes au protocole Codable, avec des CodingKeys quand nécessaire.

3

Copie le code

Copie les structs générés et utilise-les directement dans ton projet iOS, macOS ou SwiftUI.

Des questions ?

Codable est un alias de type introduit dans Swift 4 (WWDC 2017) qui combine deux protocoles : Encodable (peut être converti vers un format externe comme JSON) et Decodable (peut être créé depuis un format externe). Un type conforme à Codable peut à la fois sérialiser et désérialiser des données. La conformance est obtenue automatiquement via la synthèse du compilateur si toutes les propriétés sont également conformes à Codable.

Pour les modèles de données JSON, les structs sont préférés pour plusieurs raisons : les structs sont des value types (ils se copient plutôt que se référencer), ce qui évite les problèmes d'état partagé ; le compilateur peut les optimiser mieux ; et dans SwiftUI, les structs fonctionnent mieux avec le modèle de données réactif. Les classes (reference types) ont leur place quand tu as besoin d'héritage ou d'identité d'objet, mais pour les modèles d'API les structs sont la pratique recommandée.

CodingKeys est un enum imbriqué qui fait correspondre les noms de propriétés Swift aux noms de clés dans le JSON. Il est nécessaire quand les noms JSON (typiquement snake_case dans les API REST) diffèrent des conventions Swift (camelCase). Par exemple, si le JSON a first_name, le CodingKey fait correspondre cette clé au champ firstName du struct. Sans CodingKeys, Swift exige que les noms JSON correspondent exactement aux noms de propriétés.

En Swift, un type Optional (marqué avec ?) peut avoir une valeur ou être nil. Quand un champ JSON peut être absent ou null, la propriété du struct est déclarée comme Optional : var email: String? au lieu de var email: String. Le JSONDecoder de Foundation gère automatiquement la désérialisation : si la clé est absente du JSON ou que sa valeur est null, la propriété est mise à nil sans lancer d'erreur.

Le flux typique URLSession + Codable est : URLSession.shared.dataTask retourne des Data ; JSONDecoder().decode(MonStruct.self, from: data) convertit les Data vers le struct ; le résultat est utilisé dans l'UI sur le thread principal. Avec Swift 5.5+ et async/await, utilise let data = try await URLSession.shared.data(for: request) suivi de let objet = try JSONDecoder().decode(MonStruct.self, from: data). Ce pattern est la base de toute intégration d'API dans iOS moderne.

Swift pour iOS/macOS, le protocole Codable (2017) et l'intégration d'API avec SwiftUI

Swift a été présenté par Apple à la WWDC 2014 comme le successeur d'Objective-C pour le développement d'apps sur iOS, macOS, watchOS et tvOS. Avec l'introduction de Codable dans Swift 4 (WWDC 2017), le travail avec le JSON a été radicalement simplifié. Avant Codable, les développeurs utilisaient des bibliothèques tierces comme SwiftyJSON ou les extensions Codable d'Alamofire. Avec Codable natif, tu as juste besoin de JSONDecoder et de structs bien typés, sans dépendances externes.

SwiftUI, introduit à la WWDC 2019, a renforcé l'utilisation des structs comme modèles de données. L'architecture de SwiftUI basée sur les value types et le protocole View comme struct s'adapte parfaitement aux modèles Codable. Des patterns comme MVVM (Model-View-ViewModel) dans SwiftUI utilisent @Published dans des ViewModels ObservableObject avec des structs Codable comme modèles, créant un flux de données prévisible et testable.

Avec Swift 5.5 (WWDC 2021) et l'introduction d'async/await, consommer des API REST est devenu encore plus propre. URLSession.shared.data(for:) est désormais une fonction async qui élimine les completion handlers imbriqués (callback hell). Combiné avec JSONDecoder, le pattern complet fetch + decode ne tient qu'en 3 lignes de code. Cet outil génère les structs Codable nécessaires pour ce pattern, en traitant tout dans ton navigateur sans envoyer tes données à un serveur.