Dart:
Travailler avec JSON
Comment faire :
Dart offre un support intégré pour JSON avec la bibliothèque dart:convert
, rendant le codage et le décodage de JSON simple. Voici des exemples illustrant les opérations de base :
Parser une chaîne JSON en objet Dart :
import 'dart:convert';
void main() {
// Chaîne JSON d'exemple
String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
// Décodage JSON en Map Dart
Map<String, dynamic> user = jsonDecode(jsonString);
print('Bonjour, ${user['name']}! Vous avez ${user['age']} ans.');
// Sortie : Bonjour, John! Vous avez 30 ans.
}
Encoder un objet Dart en chaîne JSON :
import 'dart:convert';
void main() {
// Objet Dart d'exemple
Map<String, dynamic> user = {
'name': 'Jane',
'age': 25,
'email': '[email protected]'
};
// Encodage d'une Map Dart en JSON
String jsonString = jsonEncode(user);
print(jsonString);
// Sortie : {"name":"Jane","age":25,"email":"[email protected]"}
}
Utiliser json_serializable
pour des modèles complexes :
Pour des modèles de données complexes, la sérialisation manuelle peut être fastidieuse. Le paquet json_serializable
automatise ce processus. Il nécessite une configuration supplémentaire, y compris l’ajout de dépendances à votre fichier pubspec.yaml
et la création de fichiers de build. Après la configuration, vous pouvez l’utiliser comme suit :
- Définissez un modèle avec des annotations :
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);
}
- Générez le code de sérialisation :
Utilisez la commande du build runner pour générer le fichier
user.g.dart
:
flutter pub run build_runner build
- Utilisez votre modèle :
void main() {
// Parser JSON en User
Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
User user = User.fromJson(userMap);
print('Utilisateur : ${user.name}, Âge : ${user.age}');
// Sortie : Utilisateur : John, Âge : 30
// Convertir User en JSON
String jsonString = jsonEncode(user.toJson());
print(jsonString);
// Sortie : {"name":"John","age":30,"email":"[email protected]"}
}
Ces exemples illustrent les interactions de base et avancées avec JSON en Dart, permettant aux développeurs de gérer les tâches de sérialisation des données dans leurs applications de manière transparente.