← Tous les outils Code Gen

Générateur de structs Swift depuis JSON

Collez du JSON et obtenez instantanément des structs Swift Codable prêtes pour iOS, macOS et SwiftUI.

Swift Codable et le pattern CodingKeys

Le protocole Codable de Swift (alias de type pour Encodable & Decodable) est la façon standard d'analyser JSON. Le générateur produit des types struct ou class conformes à Codable avec un enum CodingKeys quand les noms de propriétés diffèrent des clés JSON. La convention de nommage Swift utilise lowerCamelCase pour les propriétés, donc "first_name" en JSON se mappe à firstName en Swift, avec un case CodingKeys reliant les deux.

Le mappage de types suit les conventions Swift : les chaînes JSON deviennent String, les entiers Int, les décimaux Double, les booléens Bool, et les tableaux [T]. Les objets imbriqués génèrent leurs propres types struct nommés. JSON null et les champs manquants se mappent à Optional (T?) avec une valeur par défaut nil dans l'initialiseur.

Le générateur peut produire des déclarations struct (type valeur, par défaut) ou class (type référence). Les structs sont préférées en Swift pour les modèles de données car elles ont une sémantique de valeur, sont automatiquement thread-safe et évitent les cycles de rétention.

CodingKeys, décodeurs personnalisés et gestion des dates

Quand un nom de propriété dans une struct Swift diffère de sa clé JSON, un enum CodingKeys est généré listant le mapping pour chaque propriété. C'est l'approche Swift standard compatible avec JSONDecoder.

Une alternative est de définir keyDecodingStrategy sur JSONDecoder à .convertFromSnakeCase, ce qui élimine le besoin de CodingKeys quand les seules différences sont snake_case vs camelCase. Le générateur peut émettre un commentaire notant cette option quand elle s'applique.

Les chaînes de date JSON sont un défi courant. Le générateur type les champs de date comme String par défaut, mais un toggle les bascule vers Date et émet une note pour définir dateDecodingStrategy sur JSONDecoder.

Flux de travail de développement iOS et SwiftUI

Les développeurs iOS utilisant URLSession ou Alamofire analysent les réponses API avec JSONDecoder().decode(MyModel.self, from: data). Le générateur produit le type MyModel dont vous avez besoin, avec tous les types imbriqués définis dans le même fichier.

SwiftUI utilise des propriétés @Published et des classes ObservableObject pour piloter l'UI depuis les modèles de données. Le générateur peut optionnellement envelopper la struct racine dans une classe ObservableObject avec des propriétés @Published.

Le code réseau Combine et async/await dans les applications iOS modernes repose sur des objets modèles bien typés. La conformité Codable générée ici s'intègre directement avec URLSession.shared.data(from:) et JSONDecoder.

FAQ

Mes données sont-elles envoyées à un serveur ?

Non. Tout le traitement s'effectue entièrement dans votre navigateur. Votre JSON ne quitte jamais votre appareil.

Dois-je utiliser struct ou class en sortie ?

Utilisez struct (par défaut) pour les modèles de données purs — c'est le Swift idiomatique. Utilisez class quand vous avez besoin d'héritage, d'interop @objc ou de sémantique de référence.

Comment les mots réservés Swift sont-ils gérés comme noms de propriétés ?

Les mots réservés Swift comme "class", "struct", "enum", "func" et "let" sont échappés avec des backticks (ex. `class`) comme noms de propriétés, et une entrée CodingKeys les mappe à la clé JSON originale.

Les structures profondément imbriquées sont-elles supportées ?

Oui. Chaque objet JSON imbriqué devient son propre type Swift nommé. Tous les types sont émis dans un seul fichier en ordre de dépendance.

Puis-je générer des modèles compatibles SwiftyJSON ?

Le générateur cible la sortie Codable Swift native, qui est le standard moderne. SwiftyJSON est une approche legacy ; les structs Codable sont plus performantes, type-safe et ne nécessitent pas la dépendance SwiftyJSON.

Outils similaires