Dart:
Arbeide med JSON

Hvordan:

Dart gir innebygd støtte for JSON med dart:convert-biblioteket, noe som gjør det enkelt å kode og dekode JSON. Nedenfor er eksempler som viser grunnleggende operasjoner:

Analysering av JSON-streng til Dart-objekt:

import 'dart:convert';

void main() {
  // Eksempel på JSON-streng
  String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
  
  // Dekoding av JSON til Dart Map
  Map<String, dynamic> user = jsonDecode(jsonString);
  
  print('Hallo, ${user['name']}! Du er ${user['age']} år gammel.');
  // Utdata: Hallo, John! Du er 30 år gammel.
}

Koding av Dart-objekt til JSON-streng:

import 'dart:convert';

void main() {
  // Eksempel på Dart-objekt
  Map<String, dynamic> user = {
    'name': 'Jane',
    'age': 25,
    'email': '[email protected]'
  };
  
  // Koding av Dart Map til JSON
  String jsonString = jsonEncode(user);
  
  print(jsonString);
  // Utdata: {"name":"Jane","age":25,"email":"[email protected]"}
}

Bruk av json_serializable for Komplekse Modeller: For komplekse datamodeller kan manuell serialisering være tungvint. Pakken json_serializable automatiserer denne prosessen. Den krever ekstra oppsett, inkludert å legge til avhengigheter i din pubspec.yaml og å lage build-filer. Etter oppsettet kan du bruke den som følger:

  1. Definer en modell med annotasjoner:
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});
  
  fabrikk User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
  Map<String, dynamic> toJson() => _$UserToJson(this);
}
  1. Generer serialiseringens malverk: Bruk build runner-kommandoen for å generere user.g.dart-filen:
flutter pub run build_runner build
  1. Bruk modellen din:
void main() {
  // Analysering av JSON til User
  Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
  User user = User.fromJson(userMap);
  
  print('Bruker: ${user.name}, Alder: ${user.age}');
  // Utdata: Bruker: John, Alder: 30

  // Konvertere User tilbake til JSON
  String jsonString = jsonEncode(user.toJson());
  print(jsonString);
  // Utdata: {"name":"John","age":30,"email":"[email protected]"}
}

Disse eksemplene illustrerer grunnleggende og avanserte JSON-interaksjoner i Dart, noe som gir utviklere muligheten til sømløst å håndtere oppgaver med dataserialisering i sine applikasjoner.