JSON-in-Dart-Konverter

Schritt 1 / 333%

Erstellen Sie aus einem JSON-Objekt oder mehreren Objektbeispielen unabhängige Dart-Modellklassen. Der Konverter wertet alle Elemente eines Arrays aus, erzeugt verschachtelte Klassen, behält die ursprünglichen JSON-Schlüssel bei und leitet nullsichere Feldtypen samt factory-Konstruktor fromJson ab. Optional ergänzt er toJson-Methoden für eine Ausgabe, die mit jsonEncode kompatibel ist. Beispiel und generierter Code bleiben im Browser und werden weder hochgeladen noch in die URL geschrieben.

So funktioniert es

  1. 1

    Aussagekräftiges Beispiel einfügen

    Verwenden Sie ein JSON-Objekt oder ein Array aus Objekten. Mehrere Elemente machen fehlende, nullable und unterschiedlich typisierte Felder sichtbar.

  2. 2

    Dart-Optionen festlegen

    Benennen Sie die Root-Klasse, legen Sie bei Bedarf alle Felder als nullable an und wählen Sie, ob toJson-Methoden erzeugt werden.

  3. 3

    Prüfen und exportieren

    Kontrollieren Sie die abgeleiteten Klassen und kopieren Sie den Code oder laden Sie eine lokale models.dart-Datei herunter.

So wird JSON zu nullsicheren Dart-Modellen

Die offizielle Dokumentation zu dart:convert erklärt, dass jsonDecode() JSON-kompatible Werte wie Zahlen, Zeichenketten, boolesche Werte, null, Listen und Maps mit String-Schlüsseln erzeugt. Eine Modellklasse lässt sich nicht unmittelbar als JSON codieren, jsonEncode() kann jedoch ihre toJson()-Methode aufrufen. Dieser Konverter erzeugt dieses manuelle Serialisierungsmuster ohne json_serializable-Annotationen oder zusätzliche Pakete.

Enthält ein Beispiel einen Benutzer mit verschachtelter Adresse, erhält die erzeugte Klasse User final-Felder und einen Konstruktor mit benannten Parametern. User.fromJson(Map<String, Object?> json) castet skalare Werte und ruft für das verschachtelte Objekt UserAddress.fromJson() auf. Fehlt address in einem der Beispiele oder ist es null, wird der Typ zu UserAddress?; die Factory prüft den Wert vor dem Erzeugen der Instanz. Ist toJson aktiviert, werden verschachtelte Modelle rekursiv in Maps umgewandelt, die jsonEncode() verarbeiten kann.

Beobachtung im JSON Erzeugter Dart-Typ
Ganze Zahl int
Dezimalzahl double
Ganze und dezimale Werte num
Text String
Boolescher Wert bool
Verschachteltes Objekt Erzeugte Modellklasse
Einheitliches Array List<T>
Leeres oder uneinheitliches verschachteltes Array List<Object?>
Nur null oder widersprüchliche Werte Object?

Der Konverter untersucht jedes Objekt eines Root-Arrays und verlässt sich nicht nur auf das erste Element. Ein Feld wird nullable, sobald es in einem Element fehlt oder ausdrücklich null ist. Sie können auch alle Felder nullable machen, wenn die reale API weniger vorhersehbar ist als das Beispiel. Der Dart-Leitfaden zur Nullsicherheit weist darauf hin, dass Typen standardmäßig nicht nullable sind und ? benötigen, um null anzunehmen.

Bezeichner und Grenzen der Typableitung

JSON-Schlüssel müssen keine gültigen Dart-Member sein. Satzzeichen werden entfernt, Wörter in lowerCamelCase umgewandelt, reservierte Schlüsselwörter erhalten ein sicheres Suffix und Kollisionen reproduzierbare Ziffernsuffixe. Der ursprüngliche Schlüssel bleibt in json['original-key'] und in der toJson()-Map unverändert. Namen verschachtelter Klassen beziehen den vollständigen Pfad ein, damit unabhängige Adressobjekte nicht versehentlich zu einer Klasse verschmelzen.

Ein einzelnes Beispiel beweist keinen API-Vertrag. JSON-Strings sind nicht automatisch Datumswerte, UUIDs oder Enums; ein leeres Array verrät keinen Elementtyp. Doppelte Membernamen lassen sich ebenfalls nicht verlustfrei hin und zurück übertragen, da JSON-Parser häufig nur den letzten Wert behalten. Prüfen Sie die erzeugten Modelle vor dem Produktiveinsatz anhand der API-Dokumentation oder des Schemas. Begrenzungen für Eingabe, Verschachtelung, Deklarationen und Ausgabe halten die Arbeit im Browser kontrollierbar.

Häufig gestellte Fragen

Nein. Parsen, Typableitung, Codeerzeugung, Kopieren und Herunterladen erfolgen im Browser. JSON und Dart-Code werden weder über unsere Server gesendet noch in die URL geschrieben.

Ja. Flutter verwendet Dart, daher lassen sich die unabhängigen Klassen in einem Flutter-Projekt einsetzen. Vergleichen Sie die abgeleiteten Typen zuvor mit dem tatsächlichen API-Vertrag.

Nein. Es erzeugt manuelle fromJson- und optionale toJson-Methoden, ohne Paket oder build_runner zu benötigen.

Ein Feld wird nullable, wenn es als null vorkommt oder in einem Beispiel fehlt. Falls das Beispiel nicht repräsentativ ist, können Sie sämtliche Felder nullable erzeugen.

Nein. Das Ergebnis bildet nur die beobachteten Werte ab. Verwenden Sie mehrere Objektbeispiele und vergleichen Sie es mit Schema oder Dokumentation des Anbieters.

Verwandte Tools

Tool in anderen Sprachen verfügbar