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:

  1. 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);
}
  1. Genereer de serialisatie-boilerplate: Gebruik het build runner commando om het user.g.dart-bestand te genereren:
flutter pub run build_runner build
  1. 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.