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:
- 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);
}
- Generer serialiseringens malverk:
Bruk build runner-kommandoen for å generere
user.g.dart
-filen:
flutter pub run build_runner build
- 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.