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

Ce que fait cet outil

Si tu développes une appli Flutter et que tu as une classe modèle dont le toJson() n'est pas encore écrit, ou que tu as juste besoin d'un corps JSON d'exemple pour un test, écrire la map à la main est pénible. Colle ton Dart ici et tu récupères du JSON valide — pas de boilerplate, pas de réécriture. Ça marche avec une classe unique, un fichier models.dart complet, ou une instance construite avec des arguments nommés.

Le convertisseur suit la façon dont dart:convert sérialise réellement. Les champs final ressortent avec leurs valeurs. int et double restent des nombres JSON. bool reste un booléen. DateTime devient une chaîne ISO-8601, le même format que produit DateTime.toIso8601String(). List<T> devient un tableau JSON ; Map<String, dynamic> devient un objet JSON. Les types nullable (String?) émettent null quand la valeur est null, sinon la valeur elle-même.

Les factory constructors, les constructeurs nommés et les helpers fromJson/toJson sont tous reconnus — ce qui finit dans la sortie, c'est ce que contient l'instance. Si tu colles plusieurs classes depuis un même fichier (par exemple tirées d'un package pub.dev), chaque classe devient une entrée de premier niveau et les instances imbriquées sont déployées en objets JSON imbriqués. Les méthodes sont ignorées. Les enums sont sérialisés par défaut avec leur nom, comme le fait habituellement describeEnum.

Comment l'utiliser

Trois étapes. Même flux que tu colles une petite classe ou un models.dart entier.

1

Colle ton Dart (ou essaie l'exemple)

Balance ton code Dart tel quel dans l'éditeur de gauche. Une définition de classe, un factory constructor, plusieurs classes, ou une instance avec arguments nommés — tout passe. Clique sur Charger un exemple pour voir un cas réaliste.

Garde les imports, les annotations (@JsonSerializable(), @freezed) et les commentaires — le parser ignore ce dont il n'a pas besoin. Pour aller plus loin sur le langage, dart.dev/language est la référence officielle.

2

Clique sur Convertir

Clique sur le bouton vert Convertir. L'outil lit le Dart, parcourt chaque classe et chaque champ, puis produit le JSON en une seule passe. Un petit indicateur de chargement s'affiche pendant l'opération.

3

Copie le JSON

Le panneau de droite se remplit de JSON indenté. Balance-le dans un test Flutter, une mock response pour Dio/http, un seed Firestore ou ta doc d'API.

Quand ça sert vraiment

Tests d'intégration Flutter

Tu as un modèle Order avec un Customer et des OrderItems imbriqués. Colle la classe, récupère le JSON, utilise-le comme mock response dans ton test d'intégration.

Démarrage de payloads d'API

Transforme une classe CreateOrderRequest en corps JSON prêt pour Postman, curl, ou un petit test rapide côté backend — fini le clavier.

Démarrage avec json_serializable

Avant de lancer build_runner, tu peux voir exactement la forme que va produire <code>toJson()</code> — pratique quand tu conçois un nouveau modèle.

Garder la doc à jour

Génère des exemples JSON pour un README ou une référence d'API directement depuis tes modèles Dart, pour que la doc colle au vrai code.

Questions fréquentes

Je peux coller plusieurs classes d'un coup ?

Oui — colle un fichier de modèles entier. Chaque classe de premier niveau devient sa propre entrée JSON, et les instances imbriquées sont déployées en objets imbriqués. Les champs privés (préfixés par un underscore) sont aussi émis, comme le ferait un toJson() classique.

Comment il gère DateTime, Duration et les nullables ?

DateTime sort en chaîne ISO-8601 via toIso8601String(). Duration est un entier de microsecondes. Les champs nullable (String?) émettent null quand la valeur est null, sinon la valeur elle-même.

Et avec List, Map et Set ?

List<T> et Set<T> deviennent tous deux des tableaux JSON — JSON n'a pas de type set, donc les membres sont listés. Map<String, dynamic> devient un objet JSON. Les génériques imbriqués (List<Map<String, Order>>) sont déployés récursivement.

Il comprend les classes freezed ou json_serializable ?

Oui — les annotations @freezed et @JsonSerializable sont reconnues et les champs sous-jacents finissent dans le JSON. Pas besoin de lancer build_runner avant ; le convertisseur lit la déclaration, pas le code généré.

Comment sont émis les enums ?

Par défaut, on utilise le nom de la valeur de l'enum (OrderStatus.paid"paid"). Ça colle à la convention habituelle et garde le JSON lisible sans code de mapping supplémentaire.

Mon code est-il stocké ?

Ton Dart est envoyé au backend pour conversion et n'est pas persisté — on ne logue pas le payload. Pour du code modèle sensible, pense à le nettoyer ou le relire avant de le coller.

D'autres outils qui peuvent servir

Dart vers JSON n'est qu'une brique. Ceux-ci s'y marient bien :