Dart:
Робота з JSON
Як:
Dart має вбудовану підтримку для JSON з бібліотекою dart:convert
, що робить кодування та декодування JSON простим. Нижче наведено приклади, які демонструють основні операції:
Аналіз рядка JSON до об’єкта Dart:
import 'dart:convert';
void main() {
// Приклад рядка JSON
String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
// Декодування JSON до Map Dart
Map<String, dynamic> user = jsonDecode(jsonString);
print('Привіт, ${user['name']}! Тобі ${user['age']} років.');
// Вивід: Привіт, John! Тобі 30 років.
}
Кодування об’єкта Dart до рядка JSON:
import 'dart:convert';
void main() {
// Приклад об'єкта Dart
Map<String, dynamic> user = {
'name': 'Jane',
'age': 25,
'email': '[email protected]'
};
// Кодування Map Dart до JSON
String jsonString = jsonEncode(user);
print(jsonString);
// Вивід: {"name":"Jane","age":25,"email":"[email protected]"}
}
Використання json_serializable
для складних моделей:
Для складних моделей даних ручна серіалізація може бути обтяжливою. Пакет json_serializable
автоматизує цей процес. Він вимагає додаткового налаштування, включно з додаванням залежностей у ваш pubspec.yaml
і створенням файлів збірки. Після налаштування ви можете використовувати його так:
- Визначте модель з анотаціями:
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);
}
- Згенеруйте шаблон серіалізації:
Використовуйте команду build runner для генерації файлу
user.g.dart
:
flutter pub run build_runner build
- Використовуйте вашу модель:
void main() {
// Аналіз JSON у User
Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
User user = User.fromJson(userMap);
print('Користувач: ${user.name}, Вік: ${user.age}');
// Вивід: Користувач: John, Вік: 30
// Перетворення User назад у JSON
String jsonString = jsonEncode(user.toJson());
print(jsonString);
// Вивід: {"name":"John","age":30,"email":"[email protected]"}
}
Ці приклади ілюструють базові та складні взаємодії з JSON у Dart, надаючи розробникам можливість безперешкодно управляти задачами серіалізації даних у їхніх додатках.