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:
- 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);
}
- 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
- 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.