Dart:
Werken met JSON
Hoe te:
Dart biedt ingebouwde ondersteuning voor JSON met de dart:convert
-bibliotheek, wat het coderen en decoderen van JSON eenvoudig maakt. Hieronder zijn voorbeelden die basisbewerkingen laten zien:
JSON-string parsen naar Dart-object:
import 'dart:convert';
void main() {
// Voorbeeld JSON-string
String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
// Decoding JSON naar Dart Map
Map<String, dynamic> user = jsonDecode(jsonString);
print('Hallo, ${user['name']}! Je bent ${user['age']} jaar oud.');
// Uitvoer: Hallo, John! Je bent 30 jaar oud.
}
Dart-object coderen naar JSON-string:
import 'dart:convert';
void main() {
// Voorbeeld Dart-object
Map<String, dynamic> user = {
'name': 'Jane',
'age': 25,
'email': '[email protected]'
};
// Dart Map coderen naar JSON
String jsonString = jsonEncode(user);
print(jsonString);
// Uitvoer: {"name":"Jane","age":25,"email":"[email protected]"}
}
Gebruik van json_serializable
voor complexe modellen:
Voor complexe datamodellen kan handmatige serialisatie omslachtig zijn. Het json_serializable
-pakket automatiseert dit proces. Het vereist extra opzet, inclusief het toevoegen van afhankelijkheden aan je pubspec.yaml
en het maken van build-bestanden. Na de opzet kun je het als volgt gebruiken:
- Definieer een model met annotaties:
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);
}
- Genereer de serialisatie-boilerplate:
Gebruik het build runner commando om het
user.g.dart
-bestand te genereren:
flutter pub run build_runner build
- Gebruik je model:
void main() {
// JSON parsen naar Gebruiker
Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
User user = User.fromJson(userMap);
print('Gebruiker: ${user.name}, Leeftijd: ${user.age}');
// Uitvoer: Gebruiker: John, Leeftijd: 30
// Gebruiker weer naar JSON converteren
String jsonString = jsonEncode(user.toJson());
print(jsonString);
// Uitvoer: {"name":"John","age":30,"email":"[email protected]"}
}
Deze voorbeelden illustreren de basis- en geavanceerde JSON-interacties in Dart, waardoor ontwikkelaars moeiteloos taken voor gegevensserialisatie in hun applicaties kunnen afhandelen.