Özet - JSON parsing
- Flutter kursu
- Orta seviye
- Ders 55/99
- 4 dk
jsonDecode ve iç içe erişimi birleştirerek API yanıtı işlersin.
API yanıtını bir bütün olarak çözmek
Bir API yanıtı genellikle hem iç içe nesneler hem de listeler içerir. Önce jsonDecode ile dizeyi Map<String, dynamic>'e çevirir, sonra köşeli parantezlerle içeriğe erişirsin.
const yanit = '{"kullanici": {"ad": "Cem"}, "arkadaslar": ["Ali", "Veli"]}';
final m = jsonDecode(yanit) as Map<String, dynamic>;
print(m['kullanici']['ad']); // Cem
print((m['arkadaslar'] as List)[0]); // Aliİçerik karışık türlerde olabileceği için as ile türe çevirmek güvenliği artırır.
Uygulama API yanıtını işle
yanit dizesini jsonDecode ile çöz. Önce 'ad' değerini, sonra 'arkadaslar' listesinin ilk elemanını print ile yazdır.
Başlangıç kodu
import 'dart:convert';
void main() {
const yanit = '{"ad": "Deniz", "arkadaslar": ["Selin", "Mert"]}';
// 'ad' değerini ve ilk arkadaşı yazdır
}Örnek çözüm
import 'dart:convert';
void main() {
const yanit = '{"ad": "Deniz", "arkadaslar": ["Selin", "Mert"]}';
final m = jsonDecode(yanit);
print(m['ad']);
print((m['arkadaslar'] as List)[0]);
}Beklenen çıktı
Deniz Selin
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir API yanıtındaki 'arkadaslar' alanı bir diziyse, jsonDecode sonrası ilk arkadaşın adına nasıl ulaşırsın?
- m['arkadaslar']['ad']
- m[0]['arkadaslar']
- jsonEncode(m['arkadaslar'])
- (m['arkadaslar'] as List)[0] Doğru cevap
Açıklama: arkadaslar bir dizi olduğu için önce List'e çevirip sonra index ile elemana erişirsin. jsonEncode veriyi dizeleştirir, okumaz; m['arkadaslar']['ad'] Map erişimi ister; m[0] ise kök Map'e değil listeye uyar.
2 İkinci arkadaşı al
import 'dart:convert';
void main() {
const s = '{"ad": "Cem", "arkadaslar": ["Ali", "Veli"]}';
final m = jsonDecode(s);
final ikinciArkadas = (m['arkadaslar'] as List)[____];
print(ikinciArkadas);
}
import 'dart:convert';
void main() {
const s = '{"ad": "Cem", "arkadaslar": ["Ali", "Veli"]}';
final m = jsonDecode(s);
final ikinciArkadas = (m['arkadaslar'] as List)[1];
print(ikinciArkadas);
}
Açıklama: İkinci elemanın index'i 1'dir; (m['arkadaslar'] as List)[1] bize 'Veli' değerini verir.
3 JSON parsing özeti
| Kavram | Anlamı |
|---|---|
jsonDecode |
JSON dizesini Map'e çevirir |
m['kullanici']['ad'] |
İç içe nesneden değer okur |
(m['arkadaslar'] as List)[0] |
Listedeki ilk elemana erişir |
dart:convert |
jsonDecode ve jsonEncode'in kütüphanesi |