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:
- 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);
}
- Generera boilerplate för serialisering:
Använd build runner-kommandot för att generera filen
user.g.dart
:
flutter pub run build_runner build
- 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.