CodeBlanks Logo Icon CodeBlanks

Özet - JSON

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

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

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

Soru
m['name'] ____ String
Cevap
m['name'] as String

Açıklama: 'as String' dynamic'i String'e cast eder.

İleri seviye bölümündeki tüm dersler