Zum Inhalt springen
100% lokal

JSON zu Dart-Klasse

Wandeln Sie ein JSON-Beispiel in eine Dart-Klasse mit fromJson, toJson und verschachtelten Modellen um.

Eingabe
Ausgabe

JSON zu Dart-Klasse

Fügen Sie ein JSON-Beispiel ein, und dieses Tool leitet die Datenstruktur ab und generiert eine entsprechende Dart-Klasse — genau so eine, wie Sie sie sonst von Hand für ein Flutter-Modell schreiben würden. Verschachtelte Objekte werden zu eigenen Klassen, Arrays werden zu typisierten `List<...>`-Feldern, und jede Klasse verfügt über einen Konstruktor, eine `fromJson`-Factory und eine `toJson`-Methode.

Die Optionen steuern den Stil des generierten Codes. "Klassenname" bestimmt die Wurzelklasse; verschachtelte Klassen werden nach dem JSON-Schlüssel benannt, der sie einführt. "Null-Sicherheit mit erforderlichen Feldern" kennzeichnet immer vorhandene Felder als `required`, optional verfügbare als nullable. "json_serializable-Annotationen" wechselt zu `@JsonSerializable()`-Delegierung für build_runner. "Finale Felder" macht die Klasse unveränderbar; "copyWith generieren" fügt eine Kopier-Methode hinzu, und "== und hashCode generieren" aktiviert Wertgleichheit.

Wenn sich Objektformen wiederholen, wiederverwendet das Tool eine Klasse statt Duplikate zu generieren; ein Feld, das nur in einigen Einträgen eines Arrays fehlt, wird dabei korrekt als optional statt als erforderlich erkannt. JSON-Schlüssel, die keine gültigen Dart-Bezeichner sind, werden automatisch umbenannt, während der Original-Schlüssel erhalten bleibt.

Alles läuft lokal in Ihrem Browser — Ihr JSON-Beispiel wird nie hochgeladen. Kopieren Sie die Klasse, laden Sie sie als .txt-Datei herunter, oder konvertieren Sie weitere verschachtelte Teile.

Häufige Fragen

Wie werden verschachtelte Objekte und Arrays behandelt?
Jedes verschachtelte Objekt wird zu einer eigenen Dart-Klasse, benannt nach dem Feld, das es eingeführt hat, und ein Array von Objekten wird zu einem typisierten List<YourClass>. Wenn die gleiche Form mehrmals vorkommt, wiederverwendet das Tool eine einzelne Klasse, anstatt für jedes Vorkommen ein Duplikat zu generieren.
Was ändert sich durch "Null-Sicherheit mit erforderlichen Feldern"?
Wenn diese Option aktiviert ist, erhält ein Feld, das das Tool in jedem Beispiel sieht, einen nicht-nullbaren Typ und einen `required`-Konstruktorparameter; ein Feld, das manchmal fehlt oder null ist, erhält einen nullbaren Typ ohne `required`-Schlüsselwort. Wenn Sie diese Option deaktivieren, wird jedes Feld nullbar und optional, was toleranter gegenüber APIs mit unterschiedlichen Antworten ist.
Benötige ich das json_serializable-Paket?
Nur, wenn Sie die Option "json_serializable-Annotationen" aktivieren, die `@JsonSerializable()`/`@JsonKey` und eine Part-Direktive ausgibt und erwartet, dass eine generierte `.g.dart`-Datei von build_runner vorhanden ist. Lassen Sie sie deaktiviert, und das Tool schreibt stattdessen einfache, abhängigkeitsfreie fromJson/toJson-Methoden.
Kann es den Typ eines numerischen Feldes korrekt ableiten?
Ja. Ein Feld, das immer eine ganze Zahl ist, wird zu int; wenn ein Beispielwert einen Dezimalpunkt hat, wird das gesamte Feld zu double verbreitert, sodass kein Wert abgeschnitten würde.
Wird mein JSON irgendwohin hochgeladen?
Nein. Die Klasse wird vollständig in Ihrem Browser generiert — Ihr JSON-Beispiel verlässt nie Ihr Gerät.