JSON en Dart Class en Ligne
Genere des classes Dart pour Flutter depuis ton JSON, directement dans le navigateur.
A quoi ca sert
JSON vers classe Dart pour Flutter
Pret pour Flutter
Code compatible avec Flutter, json_serializable et freezed. Pret a utiliser avec http, dio ou Riverpod.
100% prive
Ton JSON d'API est traite uniquement dans ton navigateur. Les donnees sensibles ne quittent jamais ton appareil.
Null safety correct
Detecte automatiquement les champs nullable. Types requis avec required, optionnels avec ? selon le JSON.
Instantane
Classes Dart pretes en quelques millisecondes. Sans inscription, sans attente, sans limites.
Comment ça marche
Trois étapes, sans complications
Colle ton JSON
Colle le JSON de la reponse de ton API. L'outil infere les types Dart corrects pour chaque champ.
Classe Dart generee
Tu obtiens une classe Dart avec le null safety, un constructeur factory fromJson(), une methode toJson() et un typage complet compatible avec json_serializable.
Integre dans Flutter
Copie la classe generee dans ton projet Flutter. Fonctionne directement avec le package http, dio ou n'importe quel client HTTP.
FAQ
Des questions ?
json_serializable est le package officiel de la communaute Dart/Flutter pour la serialisation JSON avec generation de code. Au lieu d'ecrire manuellement les methodes fromJson() et toJson(), tu definis la classe avec les annotations @JsonSerializable() et le generateur de code (build_runner) cree automatiquement les methodes. Cet outil genere du code compatible avec json_serializable : la structure de la classe, les types et le schema factory fromJson sont exactement ceux que build_runner produirait, ce qui te permet d'utiliser le code genere directement ou comme point de depart pour la version avec generation automatique.
Le schema factory fromJson() est le standard en Dart pour deserialiser du JSON. Un constructeur factory peut renvoyer une instance existante ou en creer une nouvelle ; dans ce cas il recoit un Map<String, dynamic> (le resultat de jsonDecode()) et construit l'objet. Exemple : factory User.fromJson(Map<String, dynamic> json) => User(id: json['id'] as int, name: json['name'] as String). La methode toJson() fait l'operation inverse. Ce schema est explicite, sur du point de vue des types et facile a tester.
Dart 2.12 (2021) a introduit le sound null safety, l'une des fonctionnalites les plus importantes du langage. Avec le null safety, les types ne peuvent pas etre null par defaut : String est toujours une chaine non-null, tandis que String? peut etre null. Dans le contexte JSON, les champs qui peuvent etre absents ou null doivent etre types comme nullable (String?, int?). Le mot-cle required dans le constructeur indique qu'un parametre est obligatoire et ne peut pas etre omis. Cet outil detecte automatiquement quels champs JSON pourraient etre null selon leur valeur et genere le typage correct.
Le flux typique dans Flutter est : 1) Faire l'appel HTTP avec http.get() ou dio, 2) Decoder le JSON avec jsonDecode(response.body), 3) Passer la Map resultante au constructeur factory : final user = User.fromJson(jsonDecode(response.body)). Pour les listes d'objets : final users = (jsonDecode(response.body) as List).map((e) => User.fromJson(e)).toList(). Avec le package dio, tu peux utiliser des intercepteurs pour transformer automatiquement les reponses. Avec Riverpod ou BLoC, les classes generees sont utilisees directement comme etat.
freezed est un package de generation de code pour Dart/Flutter qui va au-dela de json_serializable. Il genere des classes immuables avec : une methode copyWith() pour creer des copies modifiees, un schema union/sealed pour modeliser des etats (similaire aux sealed classes de Kotlin), l'egalite et hashCode automatiques, et la serialisation JSON integree. Il est particulierement populaire avec Riverpod (le gestionnaire d'etat recommande par la communaute Flutter) pour modeliser l'etat de l'application. La combinaison freezed + Riverpod est l'un des schemas d'architecture les plus adoptes en Flutter professionnel.
Adoption de Flutter 2020-2026, systeme de types de Dart et developpement mobile avec des API
Flutter a ete publie en version stable par Google en decembre 2018. En 2020, avec Flutter 1.17 et la stabilisation du null safety, son adoption massive a commence. Flutter 2 (2021) a introduit le support multi-plateforme (web, desktop) et le null safety stable. Flutter 3 (2022) a ajoute le support complet pour macOS, Linux et Windows. En 2024-2026, Flutter est le framework le plus populaire pour le developpement d'applications mobiles multiplateformes, avec plus d'un million d'applications en production selon Google. L'integration avec les API REST et GraphQL est fondamentale dans pratiquement toutes les applications Flutter.
Le systeme de types de Dart, concu par Google (la meme equipe que TypeScript), combine le typage statique avec l'inference de types. Dart est un langage compile (vers ARM, x64 natif pour mobile/desktop, et vers JavaScript pour le web) avec un runtime hautes performances. Contrairement a JavaScript, Dart possede de vrais types primitifs (int, double, bool, String) sans coercitions implicites. Le sound null safety fait que le compilateur garantit que les variables non-nullable ne sont jamais null, eliminant toute une categorie d'erreurs a l'execution.
Dans le developpement mobile moderne avec Flutter, la consommation d'API REST ou GraphQL est le schema dominant pour la communication client-serveur. Le package http (officiel de dart.dev) et dio (le plus populaire de la communaute, avec des intercepteurs et l'internationalisation) sont les principaux clients HTTP. Pour la gestion d'etat avec des donnees d'API, Riverpod (cree par Remi Rousselet, egalement createur de provider) avec AsyncNotifier est le schema recommande en 2024. L'architecture typique est : couche Repository (classes de donnees avec fromJson/toJson) -> couche Service (logique metier) -> providers Riverpod -> widgets UI.