Özet - JSON
- Dart kursu
- İleri seviye
- Ders 42/83
- 5 dk
jsonDecode, fromJson ve json_serializable'ı birleştirerek bir API istemcisi yazarsın.
Özet - JSON
Bu grupta Dart'ta JSON serileştirmeyi öğrendik: jsonDecode (String → dynamic), jsonEncode (nesne → String), fromJson (Map → sınıf), toJson (sınıf → Map), json_serializable (otomatik üretim).
Temel: jsonEncode sınıfı direkt kabul etmez; önce toJson gerekir. fromJson tip güvenli erişim sağlar. json_serializable bu kodu otomatik üretir.
Simetrik tasarım: fromJson(toJson(u)) == u. Bu, kayıpsız serileştirme türü sağlar.
Uygulama Özet: decode + fromJson
import 'dart:convert'; ekle. class User { String name; User(this.name); factory User.fromJson(Map<String, dynamic> m) => User(m['name'] as String); } tanımla. main içinde var u = User.fromJson(jsonDecode('{"name":"Ayşe"}') as Map<String, dynamic>); ve print(u.name); ekle.
Başlangıç kodu
void main() {
// dart:convert import ekle; User sınıfını fromJson ile tanımla
// jsonDecode + fromJson ile örnek oluştur; name yazdır
}Örnek çözüm
import 'dart:convert';
class User {
String name;
User(this.name);
factory User.fromJson(Map<String, dynamic> m) => User(m['name'] as String);
}
void main() {
var u = User.fromJson(jsonDecode('{"name":"Ayşe"}') as Map<String, dynamic>);
print(u.name);
}Beklenen çıktı
Ayşe
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 jsonEncode(u) ne yapar (u sınıf)?
- Map döndürür
- Hata fırlatır Doğru cevap
- Otomatik toJson çağırır
- Boş String
Açıklama: jsonEncode sınıfı direkt kabul etmez; hata fırlatır.
2 Kavramları eşleştir
| Kavram | Anlamı |
|---|---|
jsonDecode |
String → dynamic |
jsonEncode |
Nesne → String |
fromJson |
Map → sınıf |
toJson |
Sınıf → Map |
3 Tip cast
m['name'] ____ String
m['name'] as String
Açıklama: 'as String' dynamic'i String'e cast eder.