Tool von Tool Kumar

JSON in Dart konvertieren

Generiere Dart-Modelle für eine Flutter-API-Antwort. Die Ausgabe enthält final-Felder, const-Konstruktoren, eine fromJson-Factory und eine toJson-Methode für jede verschachtelte Klasse.

So verwendest du dieses Tool

  1. Füge eine repräsentative Antwort ein, auch mit Datensätzen, deren Felder sich unterscheiden.
  2. Prüfe die generierte Ausgabe und ändere bei Bedarf den Stammnamen.
  3. Kopiere den Code oder lade ihn herunter. Prüfe anschließend die Typen anhand deines API-Vertrags.

Praxisbeispiel

Diese Ausgabe stammt aus dem integrierten Konverter. Aus den beiden Artikelpreisen wird ein Gleitkommafeld abgeleitet. Die Werte null und ein String im Feld note ergeben ein Feld, das null sein kann.

Eingabe

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

Ausgabe

class Root {
  final int userId;
  final Profile profile;
  final List<Item> items;

  const Root({
    required this.userId,
    required this.profile,
    required this.items,
  });

  factory Root.fromJson(Map<String, dynamic> json) => Root(
    userId: json['user-id'] as int,
    profile: Profile.fromJson(json['profile'] as Map<String, dynamic>),
    items: (json['items'] as List<dynamic>).map((e) => Item.fromJson(e as Map<String, dynamic>)).toList(),
  );

  Map<String, dynamic> toJson() => {
    'user-id': userId,
    'profile': profile.toJson(),
    'items': items.map((e) => e.toJson()).toList(),
  };
}

class Profile {
  final String city;
  final String createdAt;

  const Profile({
    required this.city,
    required this.createdAt,
  });

  factory Profile.fromJson(Map<String, dynamic> json) => Profile(
    city: json['city'] as String,
    createdAt: json['created_at'] as String,
  );

  Map<String, dynamic> toJson() => {
    'city': city,
    'created_at': createdAt,
  };
}

class Item {
  final double price;
  final String? note;

  const Item({
    required this.price,
    this.note,
  });

  factory Item.fromJson(Map<String, dynamic> json) => Item(
    price: (json['price'] as num).toDouble(),
    note: json['note'] as String?,
  );

  Map<String, dynamic> toJson() => {
    'price': price,
    'note': note,
  };
}

Das Modell in Flutter verwenden

Importiere dart:convert und füge die generierten Klassen in eine Modelldatei ein. Übergib die dekodierte Antwort-Map an Root.fromJson. jsonEncode ruft die generierte toJson-Methode auf.

Wenn dein Projekt bereits json_serializable verwendet, passe die Felder an diesen Workflow an, statt zwei Sätze generierter JSON-Methoden zu pflegen.

import 'dart:convert';

final model = Root.fromJson(jsonDecode(responseBody) as Map<String, dynamic>);
final text = jsonEncode(model.toJson());

Optionen und Sonderfälle

  • JSON-Schlüssel wie user-id werden auf camelCase-Felder abgebildet. Die generierten JSON-Methoden behalten die ursprünglichen Schlüssel bei.
  • Ganzzahlige und gebrochene Preise werden zu double zusammengeführt. Der Decoder wandelt über num um und ruft toDouble auf. Dadurch funktionieren beide Beispielwerte.
  • null und ein String ergeben zusammen String?. Ein Feld, das ausschließlich als null vorkommt, bleibt dynamic, weil sein vorgesehener Typ unbekannt ist.
  • Datumswerte bleiben String. Prüfe das Parsen mit DateTime selbst. Für das Web kompiliertes Dart kann nicht jede große Ganzzahl exakt darstellen.

Standardmäßig privat

Dein Dokument bleibt in diesem Browser. Tool Kumar parst und konvertiert Daten und erstellt Downloads auf deinem Gerät, ohne Konto und ohne Upload.

JSON in Dart konvertieren: häufige Fragen

Generiert das Tool json_serializable-Annotationen?
Nein. Es schreibt die Methoden fromJson und toJson direkt. Es gibt weder @JsonSerializable-Annotationen noch part-Dateien oder einen build_runner-Schritt.
Wie berücksichtigt es Null Safety?
null-Werte und Felder, die in manchen Datensätzen fehlen, führen zu Feldern, die null sein können. Felder ohne null verwenden erforderliche Konstruktorargumente. Felder, die nur null enthalten, verwenden dynamic.
Kann es Arrays aus verschachtelten Objekten konvertieren?
Ja. Aus dem Beispiel entsteht List<Item>. Jedes Eingabeelement wird über Item.fromJson umgewandelt. Beim Kodieren wird toJson für jedes Element aufgerufen.
Benötige ich ein Flutter-Package?
Die generierten Modelle verwenden Dart-Kerntypen. Dekodiere den Antworttext mit dart:convert und rufe dann Root.fromJson auf.

Verwandte Tools

Swift-Modell aus JSON generieren, Kotlin-Data-Class aus JSON generieren und JSON Schema generieren.