In diesem Artikel
Warum Dart-/Flutter-Entwickler eine JSON-Klassengenerierung brauchen
Flutter-Anwendungen setzen für die API-Kommunikation stark auf JSON, doch Dart bietet kein integriertes JSON-zu-Objekt-Mapping wie Gson oder Jackson in anderen Sprachen. Jede API-Antwort erfordert eine Modellklasse mit manuell geschriebenen fromJson- und toJson-Factory-Methoden. Bei Apps, die mehrere Endpunkte nutzen, vervielfacht sich dieser Boilerplate-Code schnell — unser Konverter erzeugt vollständige Dart-Modellklassen aus JSON-Beispielen im Handumdrehen und spart so Stunden repetitiver Programmierarbeit.
Seit Dart 2.12 die vollständige Null Safety eingeführt hat, muss jedes Feld in Ihren Modellklassen ausdrücklich als nullbar oder nicht-nullbar typisiert sein. Der Konverter analysiert Ihre JSON-Daten, um für jedes Feld die richtige Nullbarkeit zu bestimmen, und erzeugt Modelle, die von Anfang an korrekt mit dem Null-Safety-System von Dart zusammenarbeiten.
Das fromJson/toJson-Muster
Der Konverter erzeugt Dart-Klassen nach dem gängigen Factory-Konstruktor-Muster, das im gesamten Flutter-Ökosystem verwendet wird.
- factory fromJson — erzeugt einen Factory-Konstruktor, der eine Map<String, dynamic> entgegennimmt und alle Felder mit korrektem Typ-Casting, Null-Prüfungen und dem Parsen verschachtelter Objekte initialisiert
- toJson-Methode — erstellt eine toJson()-Methode, die eine Map<String, dynamic> zur Serialisierung zurückgibt und verschachtelte Objekte durch rekursiven Aufruf ihrer toJson()-Methoden verarbeitet
- Generierung verschachtelter Modelle — enthält JSON verschachtelte Objekte, erstellt der Konverter für jede verschachtelte Struktur eine eigene Dart-Klasse mit jeweils eigenen fromJson/toJson-Methoden, die sauber mit der übergeordneten Klasse verknüpft sind
Kostenlos testen – keine Registrierung erforderlich
JSON in Dart konvertieren →Null Safety und json_serializable-Integration
Der Konverter erzeugt null-sicheren Dart-Code, der mit modernen Flutter-Entwicklungspraktiken kompatibel ist.
- Vollständige Null Safety — Felder mit Null-Werten im JSON-Beispiel werden als nullbar typisiert (String?), während vorhandene Werte nicht-nullbare Typen (String) erhalten, mit passenden Null-Prüfungen in den fromJson-Konstruktoren
- json_serializable-Kompatibilität — die erzeugte Klassenstruktur ist mit dem Paket json_serializable kompatibel, sodass Sie @JsonSerializable()- und @JsonKey-Annotationen für die Codegenerierung mit build_runner hinzufügen können
- Listenverarbeitung — Arrays von Objekten erzeugen List<ChildModel>-Typen mit korrektem Mapping in fromJson über .map() und .toList(), wobei sowohl nullbare als auch nicht-nullbare Listen-Szenarien berücksichtigt werden
Häufig gestellte Fragen
Sollte ich stattdessen das freezed-Paket verwenden?
Das freezed-Paket ergänzt Dart-Klassen um Unveränderlichkeit, Union-Typen und Pattern Matching, erfordert jedoch eine build_runner-Einrichtung und erhöht die Komplexität zur Kompilierzeit. Unser Konverter erzeugt reine Dart-Klassen, die ohne jegliche Abhängigkeiten zur Codegenerierung funktionieren. Sie können die Ausgabe später zu freezed migrieren, indem Sie Annotationen hinzufügen — die Feldnamen und Typen bleiben identisch.
Wie verarbeitet der Konverter verschachtelte JSON-Modelle?
Jedes verschachtelte JSON-Objekt wird zu einer eigenen Dart-Klasse mit eigener fromJson-Factory und toJson-Methode. Die übergeordnete Klasse verweist in ihrer Typdeklaration auf die untergeordnete Klasse und ruft in ihrem Factory-Konstruktor ChildModel.fromJson() auf. Tief verschachtelte Strukturen werden mit korrekten Typhierarchien vollständig unterstützt.
Wie werden Listenfelder im erzeugten Code behandelt?
Listen von Primitiven erzeugen einfache typisierte Listen (List<String>, List<int>). Listen von Objekten erzeugen List<ChildModel> mit fromJson-Mapping: (json['items'] as List).map((e) => ChildModel.fromJson(e)).toList(). Nullbare Listen enthalten Null-Prüfungen, und leere Arrays erzeugen korrekt typisierte, leere Listen als Standardwerte.