toJson
- Dart kursu
- İleri seviye
- Ders 40/83
- 5 dk
toJson ile nesneden JSON'a öğrenirsin.
toJson metodu
toJson, bir sınıf örneğini JSON Map'ine çeviren metoddur. jsonEncode bu metodu otomatik çağırmaz; elle çağırman gerekir.
Örnek: Map<String, dynamic> toJson() => {'name': name, 'age': age};. Sonra jsonEncode(u.toJson()) ile JSON String üretilir.
İç içe nesneler için toJson zincirle çağrılır: 'address': address.toJson(). Listeler için items.map((i) => i.toJson()).toList().
Simetrik fromJson/toJson
İyi tasarımda fromJson(toJson(u)) özgün örneğe eşit olmalıdır. Bu, serileştirme türü kayıpsızdır ve test ile doğrulanır.
Alan adları JSON'da farklı olabilir: toJson {'user_name': name} döner, fromJson m['user_name'] okur. İkisi uyumlu olmalı.
Sürümlü API'ler için @JsonKey(name: 'legacy_name') gibi annotation'lar kullanılır (json_serializable ile).
Uygulama User toJson tanımla
class User { String name; int age; User(this.name, this.age); Map<String, dynamic> toJson() => {'name': name, 'age': age}; } tanımla. main içinde var u = User('Ayşe', 30);, import 'dart:convert'; ekle ve print(jsonEncode(u.toJson())); ekle.
Başlangıç kodu
void main() {
// dart:convert import ekle; User sınıfını toJson ile tanımla
// örnek oluştur; toJson + jsonEncode ile yazdır
}Örnek çözüm
import 'dart:convert';
class User {
String name;
int age;
User(this.name, this.age);
Map<String, dynamic> toJson() => {'name': name, 'age': age};
}
void main() {
var u = User('Ayşe', 30);
print(jsonEncode(u.toJson()));
}Beklenen çıktı
{"name":"Ayşe","age":30}
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 jsonEncode(u) ne yapar (u bir sınıf)?
- Otomatik toJson çağırır
- Map döndürür
- Boş String verir
- Hata fırlatır Doğru cevap
Açıklama: jsonEncode sınıfı direkt kabul etmez; hata fırlatır.
2 toJson parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
toJson() |
Sınıf → Map |
Map<String, dynamic> |
Dönüş türü |
jsonEncode(u.toJson()) |
String üretimi |
.map((i) => i.toJson()) |
Liste dönüşümü |
3 toJson dönüş türü
Map<String, dynamic> ____() => {'name': name};
Map<String, dynamic> toJson() => {'name': name};
Açıklama: toJson metodu Map<String, dynamic> döndürür.