JSON in Dart Class
Dart-Klassen für Flutter aus JSON generieren, direkt in deinem Browser.
Wofür das Tool gut ist
JSON zu Dart-Klasse für Flutter
Flutter-ready
Code kompatibel mit Flutter, json_serializable und freezed. Direkt einsatzbereit mit http, dio oder Riverpod.
100 % privat
Dein API-JSON wird ausschließlich in deinem Browser verarbeitet. Sensible Daten verlassen nie dein Gerät.
Korrekte Null Safety
Erkennt nullable Felder automatisch. Pflichttypen mit required, optionale mit ? auf Basis des JSON.
Sofort
Dart-Klassen in Millisekunden fertig. Ohne Registrierung, ohne Wartezeit, ohne Limits.
So funktioniert es
Drei Schritte, kein Aufwand
Dein JSON einfügen
Füge das JSON aus deiner API-Antwort ein. Das Tool leitet für jedes Feld die richtigen Dart-Typen ab.
Dart-Klasse wird generiert
Du erhältst eine Dart-Klasse mit Null Safety, factory-Konstruktor fromJson(), der Methode toJson() und vollständiger Typisierung, kompatibel mit json_serializable.
In Flutter integrieren
Kopiere die generierte Klasse in dein Flutter-Projekt. Funktioniert direkt mit dem http-Paket, dio oder einem beliebigen HTTP-Client.
FAQ
Noch Fragen?
json_serializable ist das offizielle Community-Paket von Dart/Flutter zur JSON-Serialisierung mit Code-Generierung. Anstatt fromJson()- und toJson()-Methoden manuell zu schreiben, definierst du die Klasse mit @JsonSerializable()-Annotationen, und der Code-Generator (build_runner) erstellt die Methoden automatisch. Dieses Tool generiert Code, der mit json_serializable kompatibel ist: die Klassenstruktur, die Typen und das factory-fromJson-Muster entsprechen genau dem, was build_runner erzeugen würde, sodass du den generierten Code direkt nutzen oder als Ausgangspunkt für die automatische Generierungsversion verwenden kannst.
Das factory-fromJson()-Muster ist der Standard in Dart zur Deserialisierung von JSON. Ein factory-Konstruktor kann eine vorhandene Instanz zurückgeben oder eine neue erstellen; in diesem Fall empfängt er eine Map<String, dynamic> (das Ergebnis von jsonDecode()) und erstellt das Objekt. Beispiel: factory User.fromJson(Map<String, dynamic> json) => User(id: json['id'] as int, name: json['name'] as String). Die Methode toJson() macht das Gegenteil. Dieses Muster ist explizit, typsicher und leicht zu testen.
Dart 2.12 (2021) führte Sound Null Safety als eine der wichtigsten Sprachfeatures ein. Mit Null Safety können Typen standardmäßig nicht null sein: String ist immer ein nicht-null-String, während String? null sein kann. Im JSON-Kontext müssen Felder, die fehlen oder null sein können, als nullable typisiert werden (String?, int?). Das Schlüsselwort required im Konstruktor gibt an, dass ein Parameter obligatorisch ist und nicht weggelassen werden kann. Dieses Tool erkennt automatisch, welche JSON-Felder null sein könnten, und generiert die korrekte Typisierung.
Der typische Flutter-Ablauf ist: 1) HTTP-Aufruf mit http.get() oder dio durchführen, 2) JSON mit jsonDecode(response.body) dekodieren, 3) die resultierende Map an den factory-Konstruktor übergeben: final user = User.fromJson(jsonDecode(response.body)). Für Listen von Objekten: final users = (jsonDecode(response.body) as List).map((e) => User.fromJson(e)).toList(). Mit dem dio-Paket kannst du Interceptors nutzen, um Antworten automatisch zu transformieren. Mit Riverpod oder BLoC werden generierte Klassen direkt als State verwendet.
freezed ist ein Code-Generierungspaket für Dart/Flutter, das über json_serializable hinausgeht. Es generiert unveränderliche Klassen mit: der copyWith()-Methode zum Erstellen modifizierter Kopien, dem union/sealed-Muster zur Modellierung von Zuständen (ähnlich wie Kotlins sealed classes), automatischer Gleichheit und hashCode sowie integrierter JSON-Serialisierung. Es ist besonders beliebt zusammen mit Riverpod (dem von der Flutter-Community empfohlenen State-Manager) zur Modellierung des Anwendungszustands. Die Kombination freezed + Riverpod ist eines der am weitesten verbreiteten Architekturmuster in professionellem Flutter.
Flutter-Verbreitung 2020–2026, Darts Typsystem und mobile API-Entwicklung
Flutter wurde von Google im Dezember 2018 in der stabilen Version veröffentlicht. Im Jahr 2020, mit Flutter 1.17 und der Stabilisierung von Null Safety, begann die breite Adoption. Flutter 2 (2021) führte Multi-Plattform-Unterstützung (Web, Desktop) und stabiles Null Safety ein. Flutter 3 (2022) ergänzte vollständige Unterstützung für macOS, Linux und Windows. In den Jahren 2024–2026 ist Flutter das beliebteste Framework für plattformübergreifende mobile App-Entwicklung mit über einer Million Produktionsanwendungen laut Google. Die Integration mit REST- und GraphQL-APIs ist in nahezu allen Flutter-Anwendungen grundlegend.
Darts Typsystem, von Google entwickelt (dem gleichen Team wie TypeScript), kombiniert statische Typisierung mit Typinferenz. Dart ist eine kompilierte Sprache (nach ARM, nativem x64 für Mobile/Desktop und nach JavaScript für das Web) mit hochperformantem Runtime. Im Gegensatz zu JavaScript hat Dart echte primitive Typen (int, double, bool, String) ohne implizite Koerzionen. Sound Null Safety lässt den Compiler garantieren, dass non-nullable Variablen nie null sind, was eine ganze Klasse von Laufzeitfehlern eliminiert.
In der modernen Flutter-Mobilentwicklung ist der Konsum von REST- oder GraphQL-APIs das dominante Muster für die Client-Server-Kommunikation. Das http-Paket (offiziell von dart.dev) und dio (das beliebteste Community-Paket mit Interceptors und Internationalisierung) sind die wichtigsten HTTP-Clients. Für das State-Management mit API-Daten ist Riverpod (erstellt von Remi Rousselet, auch Schöpfer von provider) mit AsyncNotifier das empfohlene Muster in 2024. Die typische Architektur ist: Repository-Schicht (Datenklassen mit fromJson/toJson) → Service-Schicht (Geschäftslogik) → Riverpod-Provider → UI-Widgets.