Skip to main content
CheckTown
Convertisseurs

Comment convertir JSON en classes modèle Dart

Publié le 5 min de lecture
Dans cet article

Pourquoi les développeurs Dart/Flutter ont besoin de la génération de classes JSON

Les applications Flutter reposent fortement sur le JSON pour la communication API, mais Dart ne dispose pas de mappage JSON-vers-objet intégré comme Gson ou Jackson dans d'autres langages. Chaque réponse API nécessite une classe modèle avec des méthodes factory fromJson et toJson manuelles. Pour les apps consommant plusieurs endpoints, ce code standard se multiplie rapidement — notre convertisseur génère des classes modèle Dart complètes à partir d'échantillons JSON instantanément, économisant des heures de code répétitif.

Depuis que Dart 2.12 a introduit la null safety robuste, chaque champ dans vos classes modèle doit être explicitement typé comme nullable ou non-nullable. Le convertisseur analyse vos données JSON pour déterminer la nullabilité correcte de chaque champ, produisant des modèles qui fonctionnent correctement avec le système de null safety de Dart dès le départ.

Le pattern fromJson/toJson

Le convertisseur génère des classes Dart suivant le pattern standard de constructeur factory utilisé dans l'écosystème Flutter.

  • factory fromJson — génère un constructeur factory qui prend un Map<String, dynamic> et initialise tous les champs avec un casting de types approprié, des vérifications null et l'analyse d'objets imbriqués
  • Méthode toJson — crée une méthode toJson() qui retourne un Map<String, dynamic> pour la sérialisation, gérant les objets imbriqués en appelant récursivement leurs méthodes toJson()
  • Génération de modèles imbriqués — quand le JSON contient des objets imbriqués, le convertisseur crée des classes Dart séparées pour chaque structure imbriquée avec leurs propres méthodes fromJson/toJson, correctement liées depuis la classe parent

Essayez gratuitement — sans inscription

Convertir JSON en Dart →

Null safety et intégration json_serializable

Le convertisseur génère du code Dart null-safe compatible avec les pratiques modernes de développement Flutter.

  • Null safety robuste — les champs avec des valeurs null dans l'échantillon JSON sont typés comme nullables (String?), tandis que les valeurs présentes utilisent des types non-nullables (String), avec des vérifications null appropriées dans les constructeurs fromJson
  • Compatibilité json_serializable — la structure de classe générée est compatible avec le package json_serializable, vous permettant d'ajouter les annotations @JsonSerializable() et @JsonKey pour la génération de code avec build_runner
  • Gestion des listes — les tableaux d'objets génèrent des types List<ChildModel> avec un mapping approprié dans fromJson utilisant .map() et .toList(), gérant les scénarios de listes nullables et non-nullables

Questions fréquentes

Dois-je utiliser le package freezed à la place ?

Le package freezed ajoute l'immuabilité, les types union et le support du pattern matching aux classes Dart, mais nécessite la configuration de build_runner et ajoute de la complexité de compilation. Notre convertisseur génère des classes Dart simples qui fonctionnent sans dépendances de génération de code. Vous pouvez migrer la sortie vers freezed plus tard en ajoutant des annotations — les noms de champs et les types restent les mêmes.

Comment le convertisseur gère-t-il les modèles JSON imbriqués ?

Chaque objet JSON imbriqué devient une classe Dart séparée avec sa propre factory fromJson et méthode toJson. La classe parent référence la classe enfant dans sa déclaration de type et appelle ChildModel.fromJson() dans son constructeur factory. Les structures profondément imbriquées sont entièrement supportées avec des hiérarchies de types appropriées.

Comment les champs List sont-ils gérés dans le code généré ?

Les listes de primitives génèrent des listes typées simples (List<String>, List<int>). Les listes d'objets génèrent List<ChildModel> avec un mapping fromJson : (json['items'] as List).map((e) => ChildModel.fromJson(e)).toList(). Les listes nullables incluent des vérifications null, et les tableaux vides génèrent des valeurs par défaut de liste vide correctement typées.

Outils associés