Sol tarafa Dart’ı yapıştır ve "Dönüştür"e tıkla — biz JSON’a çeviririzDart kodunu yapıştır

Bu araç ne yapıyor

Bir Flutter uygulaması yazıyorsun ve henüz toJson()’ını yazmadığın bir model sınıfın varsa ya da test için küçük bir örnek JSON gövdesine ihtiyacın varsa, map’i elle yazmak can sıkıcı. Dart’ını buraya yapıştır, geçerli JSON’u geri al — boilerplate yok, tekrar yazmak yok. Tek bir sınıfla, komple bir models.dart dosyasıyla ya da named argüman’larla kurduğun bir instance’la çalışır.

Dönüştürücü, dart:convert’ın gerçekte nasıl serileştirdiğini takip eder. final alanlar değerleriyle birlikte çıkar. int ve double JSON sayıları olarak kalır. bool boolean olarak kalır. DateTime, DateTime.toIso8601String()’ın ürettiği biçimle aynı olan bir ISO-8601 string’ine dönüşür. List<T> JSON dizisi olur; Map<String, dynamic> JSON nesnesi olur. Nullable tipler (String?) değer null’sa null, değilse değerin kendisini yayar.

Factory constructor’lar, named constructor’lar ve fromJson/toJson helper’larının hepsi tanınır — çıktıya düşen şey, instance’ın içindeki veridir. Tek bir dosyadan (örneğin pub.dev paketinden çekilmiş) birden fazla sınıf yapıştırırsan, her sınıf üst düzey bir giriş olur ve iç içe instance’lar iç içe JSON nesneleri olarak açılır. Metotlar atlanır. Enum’lar varsayılan olarak adlarıyla serileştirilir; bu da describeEnum’un yaygın kullanımıyla uyumludur.

Nasıl kullanılır

Üç adım. Küçük bir sınıf da yapıştırsan, koca bir models.dart da — akış aynı.

1

Dart’ını yapıştır (ya da örneği dene)

Dart kodunu olduğu gibi sol editöre bırak. Sınıf tanımı, factory constructor, birden fazla sınıf veya named argüman’lı instance — hepsi olur. Gerçekçi bir örneği görmek için Örneği Yükle’ye tıkla.

Import’ları, annotation’ları (@JsonSerializable(), @freezed) ve yorumları bırakabilirsin — parser ihtiyacı olmayanı yok sayar. Dil hakkında daha derin bilgi için dart.dev/language asıl kaynaktır.

2

Dönüştür’e bas

Yeşil Dönüştür butonuna tıkla. Araç Dart’ı okur, her sınıfı ve alanı dolaşır ve tek geçişte JSON üretir. Çalışırken kısa bir yükleme göstergesi görünür.

3

JSON’u kopyala

Sağdaki panel girintili JSON’la dolar. Bir Flutter testine, Dio/http için bir mock response’a, bir Firestore seed’ine veya API dokümanına bırakabilirsin.

Gerçekten işe yaradığı anlar

Flutter entegrasyon testleri

İç içe Customer ve OrderItems’ı olan bir Order modelin var. Sınıfı yapıştır, JSON’u al, entegrasyon testinde mock response olarak kullan.

API payload’larını hızlı kurmak

Bir CreateOrderRequest sınıfını, Postman, curl veya hızlı bir backend denemesi için hazır bir JSON gövdesine çevir — artık elle yazmak yok.

json_serializable için hazırlık

build_runner’ı çalıştırmadan önce <code>toJson()</code>’ın tam olarak hangi biçimi üreteceğini görebilirsin — yeni bir model tasarlarken işe yarıyor.

Dokümanları kodla senkron tutmak

README veya API referansı için JSON örneklerini doğrudan Dart modellerinden üret; böylece dokümantasyon gerçek kodu takip eder.

Sık sorulanlar

Birden fazla sınıfı aynı anda yapıştırabilir miyim?

Evet — komple bir modeller dosyası yapıştırabilirsin. Her üst düzey sınıf kendi JSON girişi olur, iç içe instance’lar iç içe nesneler olarak açılır. Alt çizgi’yle başlayan private alanlar da yayınlanır; zaten normal bir toJson()’ın yaptığına benzer.

DateTime, Duration ve nullable’ları nasıl ele alıyor?

DateTime, toIso8601String()’a göre ISO-8601 string’i olarak çıkar. Duration sayısal bir mikrosaniye değeridir. Nullable alanlar (String?), değer null’sa null, değilse değerin kendisini yayar.

Peki List, Map ve Set?

List<T> ve Set<T> ikisi de JSON dizisi olur — JSON’da set tipi yok, bu yüzden üyeler sıralanır. Map<String, dynamic> bir JSON nesnesi olur. İç içe generic’ler (List<Map<String, Order>>) özyinelemeli olarak açılır.

freezed veya json_serializable sınıflarını anlıyor mu?

Evet — @freezed ve @JsonSerializable annotation’ları tanınır ve alttaki alanlar JSON’a dahil edilir. build_runner’ı önceden çalıştırmana gerek yok; dönüştürücü üretilen kodu değil, bildirimi okur.

Enum’lar nasıl yayınlanır?

Varsayılan olarak enum değerinin adı kullanılır (OrderStatus.paid"paid"). Yaygın kullanımla uyumlu ve ek mapping kodu gerektirmeden JSON’u okunur tutuyor.

Kodum saklanıyor mu?

Dart’ın dönüşüm için backend’e gönderilir ve saklanmaz — payload’ı loglamıyoruz. Hassas model kodu için yapıştırmadan önce bir gözden geçir ya da temizle.

İşine yarayabilecek diğer araçlar

Dart’tan JSON’a tek parça. Bunlar iyi eşleşir: