Génération de types

JSON en SwiftDes exemples aux modèles Codable

Comparez les deux objets pour comprendre les propriétés optionnelles.

JSON en Swift

Entrée JSON

Analyse et génération dans ce navigateur. L’entrée n’est ni envoyée ni enregistrée.

Source générée

Options de génération

Int64 / Decimal ; vérifié avec Swift 6.3.1, macOS 26. Utilisez makeJSONDecoder() et testez le système cible.

Le tableau racine définit l’élément Root ; décodez [Root].self.

2 structs · 2 propriétés optionnelles

JSON en Swift permet de démarrer un modèle à partir de réponses réelles. Ajoutez les cas où un champ disparaît : un seul objet complet ne révèle pas les variations de votre API.

Ce convertisseur JSON en Swift prépare des structs Swift et leurs CodingKeys. Les champs optionnels reflètent les exemples fournis, pas toutes les obligations de votre contrat métier.

Pourquoi choisir JSON en Swift ?

Comparer tous les objets

JSON en Swift fusionne les objets situés au même endroit dans un tableau. Une clé absente ou null devient optionnelle ; une valeur toujours présente conserve son type précis.

Deux cartes d’objets fusionnent en un modèle dont une case vide représente une propriété optionnelle.

Choisir la lecture des dates

Les horodatages restent des chaînes par défaut. L’option ISO relie uniquement les dates complètes valides à Date et à un décodeur adapté, sans modifier les autres chaînes.

Une carte d’horodatage se sépare entre une chaîne conservée et une horloge sur un chemin sélectionné.

Définir le contrat de lecture

01

Varier les exemples

La racine doit être un objet ou un tableau non vide d’objets. Un tableau racine produit le modèle de son élément : décodez [Root].self. Les tableaux imbriqués examinent eux aussi tous leurs éléments.

02

Vérifier noms et horaires

Gardez CodingKeys pour les clés snake_case ou inhabituelles. Choisissez camelCase ou la conservation des noms valides. Une date reconnue doit avoir un fuseau et au plus trois chiffres de fraction de seconde.

03

Confirmer les remplacements

La génération attend 350 ms après une modification. Désactivez-la pour utiliser le bouton ou Ctrl/Cmd+Enter. Les exports périmés sont bloqués immédiatement. Exemple et Effacer affichent les nombres de caractères avant application, avec un retour arrière possible.

Le contenu du fichier

Des structures cohérentes

JSON en Swift crée des propriétés var et des structs Codable dans un fichier. Les objets enfants non vides deviennent des structures auxiliaires, les objets vides des dictionnaires, et les valeurs mixtes un enum JSONValue récursif autonome.

Les nombres lus directement

Les groupes de tokens entiers dans la plage signée de 64 bits utilisent Int64. Décimales, exposants et grands entiers utilisent Foundation.Decimal, ainsi que les groupes numériques qui les contiennent. Aucun passage intermédiaire par JavaScript Number.

La sémantique des optionnels

Le mode observé retient les absences et null ; le mode global rend toutes les propriétés optionnelles. Codable synthétisé lit absence et null comme nil, puis omet normalement ces propriétés à l’encodage.

Un décodeur configuré

makeJSONDecoder() conserve la stratégie de clés par défaut. Si Date est inféré, il essaie ISO8601DateFormatter avec puis sans fraction de seconde. Configurez séparément JSONEncoder pour réémettre du texte ISO.

Limites du modèle proposé

Pas de schéma métier complet
Ni JSON Schema, OpenAPI, enums devinés, class, Core Data, SwiftData ni code réseau. Le décodage synthétisé ignore les clés inconnues. Le contrôle calendaire à l’inférence ne transforme pas le décodeur exporté en validateur métier.
Un budget numérique prudent
Au plus 38 chiffres significatifs après retrait des zéros initiaux et finaux. Exposant brut entre −128 et 127, exposant moins nombre de décimales au moins −128, ordre décimal normalisé au plus 127. Ces règles concernent aussi les valeurs mixtes et l’écriture brute de zéro.
Tester la version de Foundation
Compilation et aller-retour numérique vérifiés avec Swift 6.3.1 sur macOS 26, également en mode de langage Swift 5. Cela ne teste pas un ancien compilateur. Un ancien Foundation peut perdre de la précision Decimal : vérifiez la plateforme de déploiement. Les écritures 1.0 et 1e0 ne sont pas conservées.
Date décrit un instant
Il faut une date complète valide avec fuseau et zéro à trois chiffres de fraction, pour toutes les chaînes non null à cet endroit. Dates seules, heures sans fuseau, dates invalides et chaînes plus précises restent String. Le fuseau et la présentation d’origine sont perdus. L’inférence se limite à 1583–9999 ; les dates antérieures restent String pour éviter les décalages calendaires historiques. Le helper refuse aussi les années avant 1583.
Conserver des clés distinctes
Sans CodingKeys, toute transformation de nom nécessaire est refusée. Mots réservés, collisions et propriété CodingKeys sont renommés. Les surrogates isolés dans les clés ou valeurs et les clés différentes mais équivalentes en NFC dans un objet ou modèle fusionné sont rejetés.
Entrée stricte et bornée
Pas de commentaires, virgules finales, clés dupliquées, réparation, import de fichier, URL distante ni exécution Swift dans le navigateur. Maximum : 500 000 caractères, 50 000 nœuds, profondeur 40, 100 champs par objet fusionné, 200 structs, 1 000 caractères par clé/nombre et 1 000 000 en sortie.

Questions sur JSON en Swift

Le code produit prend-il en charge les objets imbriqués ?

Oui. JSON en Swift génère des structures auxiliaires pour les objets non vides et fusionne les éléments des tableaux. Les objets vides deviennent des dictionnaires et les valeurs mixtes utilisent un enum Codable récursif.

La conversion est-elle gratuite ?

Oui, la génération et le téléchargement du code sont disponibles sans paiement. La page produit du Swift, mais ne compile ni n’exécute votre application dans le navigateur.

Peut-on continuer à convertir hors connexion ?

Après le chargement complet de la page et de ses ressources, les conversions n’ont pas besoin d’envoyer les données au réseau. Il ne s’agit toutefois pas d’une application installable hors ligne ; un rechargement peut nécessiter une connexion.

Pourquoi une propriété devient-elle optionnelle ?

Une clé manque dans un autre exemple ou contient null. Vous pouvez aussi rendre toutes les propriétés optionnelles. Le décodage synthétisé donne nil dans les deux cas ; une distinction en trois états nécessite du Codable personnalisé.

Comment décoder les dates ISO 8601 avec des fractions de seconde ?

Activez l’inférence ISO pour les horodatages avec fuseau et jusqu’à trois décimales. makeJSONDecoder() essaie les deux formats. Les chaînes plus précises restent String, et le format d’encodage doit être configuré à part.

Un cas de déduction mérite une amélioration ?

Éprouver le modèle sur vos réponses

Utilisez JSON en Swift avec des absences, null et de vrais nombres, puis compilez et décodez le fichier sur le système réellement ciblé.