Colle du Swift à gauche et clique sur "Convertir" — on le transforme en JSONColle ton code Swift

Ce que fait cet outil

Si tu as déjà défini un struct Swift, rendu Codable, et réalisé que tu avais juste besoin du JSON sans monter un playground ou un simulateur — cet outil fait exactement ça. Colle le Swift ici et récupère du JSON valide sans toucher à JSONEncoder, Xcode ou Swift Package Manager. Il gère une seule instance de struct, un fichier entier avec plusieurs types, ou un truc avec des tableaux imbriqués et des optionals — même résultat : un document JSON propre avec toutes les propriétés préservées.

Le convertisseur suit la façon dont les valeurs Swift sont réellement sérialisées par JSONEncoder. String, Int, Double, Bool sont mappés à leurs équivalents JSON évidents. Les tableaux [Item] deviennent des tableaux JSON ; les dictionnaires [String: V] deviennent des objets JSON. Optional<T> avec nil devient null en JSON (ou est omis, selon la stratégie de l'encoder). UUID devient une chaîne hexadécimale standard, Date devient une chaîne ISO-8601, et URL devient une chaîne. Les enums avec raw value émettent la valeur brute — le même comportement qu'avec Foundation.JSONEncoder.

Les CodingKeys personnalisés sont respectés — si tu renommes une propriété pour le JSON (case shippingAddress = "shipping_address"), la sortie utilise la clé renommée. Les types Codable imbriqués sont développés en ligne. Colle plusieurs structs d'un coup et chacun devient une entrée de premier niveau dans la sortie. Si tu veux creuser comment Swift modélise JSON, apple/swift a le code source, et Hacking with Swift a des explications claires du protocole Codable.

Comment l'utiliser

Trois étapes. Ça fonctionne pareil que tu colles une instance de struct ou un fichier de modèles complet.

1

Colle ton Swift (ou charge l'exemple)

Balance ton Swift tel quel dans l'éditeur de gauche. Un struct, une class, un enum avec valeurs associées, plusieurs types ou des tableaux et dictionnaires imbriqués — tout passe. Clique sur Charger un exemple pour voir d'abord un cas réaliste.

Pas besoin d'enlever import Foundation ou les attributs @available. Laisse la syntaxe Swift intacte — le parser gère.

2

Clique sur Convertir

Clique sur le bouton vert Convertir. L'outil lit le Swift, préserve chaque propriété et type imbriqué, et sort le JSON en une passe. Un court indicateur de chargement s'affiche pendant le traitement.

3

Copie le JSON

Le panneau de droite se remplit de JSON indenté. Copie-le dans ton test URLSession, dans un fixture MockURLProtocol, dans tes exemples OpenAPI ou dans un client REST. Voilà, c'est tout.

Quand ça sert vraiment

Fixtures API iOS

Tu as un struct de requête pour un appel <code>URLSession</code> et il te faut un payload JSON pour Postman ou un test. Colle le struct, récupère le JSON, passe à autre chose.

Réponses de mock server

Transforme tes types <code>Codable</code> de réponse en JSON à balancer dans un mock server, <code>MockURLProtocol</code> ou un fichier de réponse enregistrée — pas besoin d'appeler <code>JSONEncoder</code>.

Tests backend Vapor / SwiftNIO

Un service Vapor avec 20 types <code>Content</code>. Génère des fichiers JSON de seed pour les tests d'intégration sans écrire un seul appel d'encode.

Doc et exemples OpenAPI

Génère des exemples JSON pour ta spec OpenAPI ou ta référence d'API directement depuis tes modèles réels, pour que la doc reste synchro.

Questions fréquentes

Le type doit-il être conforme à Codable ?

Le type n'a pas besoin d'être réellement conforme dans ton code pour que l'outil fonctionne — le convertisseur lit la forme et produit directement le JSON. Dans ton app, Codable (ou au moins Encodable) c'est comme ça que tu obtiens le même résultat au runtime via JSONEncoder.

Est-ce qu'il respecte les CodingKeys personnalisés ?

Oui. Si ton type définit enum CodingKeys: String, CodingKey avec des raw values personnalisées (case shippingAddress = "shipping_address"), la sortie utilise ces clés renommées.

Comment sont gérés les Optional, Date et UUID ?

Optional<T> avec nil devient null en JSON. Date sort en chaîne ISO-8601 par défaut (comme JSONEncoder.DateEncodingStrategy.iso8601). UUID devient une chaîne hexadécimale standard. URL devient une chaîne.

Et les enums avec valeurs associées ?

Les enums avec raw value émettent directement la valeur. Les enums avec valeurs associées sortent en objet tagué — la même forme que Swift lui-même produit quand tu encodes un case avec des valeurs associées.

Mon code est-il stocké ?

Ton code est envoyé au backend pour la conversion et n'est pas persisté — on ne logue pas le payload. Relis le code sensible avant de le coller.

Ça marche pour les modèles SwiftUI et les property wrappers ?

Oui — les property wrappers comme @Published sont déballés vers leur valeur interne. Les classes ObservableObject avec des propriétés @Published se sérialisent proprement. Les types de vue spécifiques à SwiftUI ne sont pas des données sérialisables, mais tout modèle derrière tes vues passe sans souci.

D'autres outils qui peuvent te servir

Swift vers JSON n'est qu'une pièce du puzzle. Ceux-là vont bien avec :