Dart:
Praca z JSON
Jak to zrobić:
Dart oferuje wbudowane wsparcie dla JSON za pomocą biblioteki dart:convert
, co ułatwia kodowanie i dekodowanie JSON. Poniżej znajdują się przykłady przedstawiające podstawowe operacje:
Parsowanie ciągu JSON na obiekt Dart:
import 'dart:convert';
void main() {
// Przykładowy ciąg JSON
String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
// Dekodowanie JSON do Mapy Dart
Map<String, dynamic> user = jsonDecode(jsonString);
print('Witaj, ${user['name']}! Masz ${user['age']} lat.');
// Wynik: Witaj, John! Masz 30 lat.
}
Kodowanie obiektu Dart na ciąg JSON:
import 'dart:convert';
void main() {
// Przykładowy obiekt Dart
Map<String, dynamic> user = {
'name': 'Jane',
'age': 25,
'email': '[email protected]'
};
// Kodowanie Mapy Dart do JSON
String jsonString = jsonEncode(user);
print(jsonString);
// Wynik: {"name":"Jane","age":25,"email":"[email protected]"}
}
Używanie json_serializable
dla skomplikowanych modeli:
Dla skomplikowanych modeli danych, ręczna serializacja może być uciążliwa. Pakiet json_serializable
automatyzuje ten proces. Wymaga dodatkowej konfiguracji, w tym dodania zależności do pliku pubspec.yaml
oraz tworzenia plików budowania. Po konfiguracji, można go używać w następujący sposób:
- Zdefiniuj model z adnotacjami:
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);
}
- Wygeneruj boilerplate do serializacji:
Użyj polecenia build runner, aby wygenerować plik
user.g.dart
:
flutter pub run build_runner build
- Użyj swojego modelu:
void main() {
// Parsowanie JSON na User
Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
User user = User.fromJson(userMap);
print('Użytkownik: ${user.name}, Wiek: ${user.age}');
// Wynik: Użytkownik: John, Wiek: 30
// Konwersja User z powrotem na JSON
String jsonString = jsonEncode(user.toJson());
print(jsonString);
// Wynik: {"name":"John","age":30,"email":"[email protected]"}
}
Te przykłady ilustrują podstawowe i zaawansowane interakcje z JSON w Dart, umożliwiając programistom płynne obsługiwanie zadań serializacji danych w ich aplikacjach.