CodeBlanks Logo Icon CodeBlanks

Özet - JSON parsing

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

main.dart
import 'dart:convert';

void main() {
  const yanit = '{"ad": "Deniz", "arkadaslar": ["Selin", "Mert"]}';
  // 'ad' değerini ve ilk arkadaşı yazdır
}

Örnek çözüm

main.dart
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

Soru
import 'dart:convert';

void main() {
  const s = '{"ad": "Cem", "arkadaslar": ["Ali", "Veli"]}';
  final m = jsonDecode(s);
  final ikinciArkadas = (m['arkadaslar'] as List)[____];
  print(ikinciArkadas);
}
Cevap
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

Orta seviye bölümündeki tüm dersler