Dart:
Arbeiten mit JSON

Wie geht das:

Dart bietet mit der Bibliothek dart:convert eingebaute Unterstützung für JSON, was das Codieren und Dekodieren von JSON sehr einfach macht. Unten finden Sie Beispiele, die grundlegende Operationen zeigen:

JSON-String in Dart-Objekt parsen:

import 'dart:convert';

void main() {
  // Beispiel JSON-String
  String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
  
  // JSON zu Dart Map dekodieren
  Map<String, dynamic> user = jsonDecode(jsonString);
  
  print('Hallo, ${user['name']}! Du bist ${user['age']} Jahre alt.');
  // Ausgabe: Hallo, John! Du bist 30 Jahre alt.
}

Dart-Objekt in JSON-String kodieren:

import 'dart:convert';

void main() {
  // Beispiel Dart-Objekt
  Map<String, dynamic> user = {
    'name': 'Jane',
    'age': 25,
    'email': '[email protected]'
  };
  
  // Dart Map in JSON kodieren
  String jsonString = jsonEncode(user);
  
  print(jsonString);
  // Ausgabe: {"name":"Jane","age":25,"email":"[email protected]"}
}

Verwendung von json_serializable für komplexe Modelle: Für komplexe Datenmodelle kann die manuelle Serialisierung mühsam sein. Das Paket json_serializable automatisiert diesen Prozess. Es erfordert zusätzliche Einrichtungen, einschließlich des Hinzufügens von Abhängigkeiten zu Ihrer pubspec.yaml und dem Erstellen von Build-Dateien. Nach der Einrichtung können Sie es wie folgt verwenden:

  1. Ein Modell mit Annotationen definieren:
import 'package:json_annotation/json_annotation.dart';

part 'user.g.dart';

@JsonSerializable()
class User {
  String name;
  int age;
  String email;
  
  User({required this.name, required this.age, required this.email});
  
  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
  Map<String, dynamic> toJson() => _$UserToJson(this);
}
  1. Das Serialisierungs-Gerüst generieren: Verwenden Sie den Build Runner-Befehl, um die Datei user.g.dart zu generieren:
flutter pub run build_runner build
  1. Ihr Modell verwenden:
void main() {
  // JSON in User parsen
  Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
  User user = User.fromJson(userMap);
  
  print('Benutzer: ${user.name}, Alter: ${user.age}');
  // Ausgabe: Benutzer: John, Alter: 30

  // User zurück in JSON konvertieren
  String jsonString = jsonEncode(user.toJson());
  print(jsonString);
  // Ausgabe: {"name":"John","age":30,"email":"[email protected]"}
}

Diese Beispiele illustrieren grundlegende und fortgeschrittene JSON-Interaktionen in Dart und ermächtigen Entwickler dazu, Aufgaben zur Daten-Serialisierung in ihren Anwendungen nahtlos zu handhaben.