Dart:
Att Arbeta med JSON

Hur man gör:

Dart erbjuder inbyggt stöd för JSON med biblioteket dart:convert, vilket gör det enkelt att koda och avkoda JSON. Nedan följer exempel som visar grundläggande operationer:

Tolka JSON-sträng till Dart-objekt:

import 'dart:convert';

void main() {
  // Exempel på JSON-sträng
  String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
  
  // Avkodar JSON till Dart Map
  Map<String, dynamic> user = jsonDecode(jsonString);
  
  print('Hej, ${user['name']}! Du är ${user['age']} år gammal.');
  // Utskrift: Hej, John! Du är 30 år gammal.
}

Koda Dart-objekt till JSON-sträng:

import 'dart:convert';

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

Använda json_serializable för Komplexa Modeller: För komplexa datamodeller kan manuell serialisering vara besvärlig. Paketet json_serializable automatiserar denna process. Det kräver ytterligare installation, inklusive att lägga till beroenden i din pubspec.yaml och att skapa byggfiler. Efter installationen kan du använda den enligt följande:

  1. Definiera en modell med annotationer:
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. Generera boilerplate för serialisering: Använd build runner-kommandot för att generera filen user.g.dart:
flutter pub run build_runner build
  1. Använd din modell:
void main() {
  // Tolka JSON till User
  Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
  User user = User.fromJson(userMap);
  
  print('Användare: ${user.name}, Ålder: ${user.age}');
  // Utskrift: Användare: John, Ålder: 30

  // Konvertera User tillbaka till JSON
  String jsonString = jsonEncode(user.toJson());
  print(jsonString);
  // Utskrift: {"name":"John","age":30,"email":"[email protected]"}
}

Dessa exempel illustrerar grundläggande och avancerade JSON-interaktioner i Dart, vilket ger utvecklare möjlighet att sömlöst hantera uppgifter för data-serialisering i sina applikationer.