JSON’dan Türlere
Bir yanda örnek, öbür yanda tür.
Örnekler girdiyi ve ayarları geçici olarak değiştirir. Önceki çalışmanızı geri yükleyebilirsiniz.
Sonucu burada görmek için yukarıya yapıştırın veya yazın.
Dosyalarınız cihazınızda kalır
Bu araç tamamen tarayıcınızda çalışır. Yapıştırdığınız içerik cihazınızda işlenir ve asla bir sunucuya gönderilmez; bu yüzden token'lar, anahtarlar ve yayımlanmamış metinlerle güvenle kullanabilirsiniz.
Örnek
Örnek: kargo takip yanıtını Go struct’a çevirmek — henüz teslim edilmemiş gönderi
Bir e-ticaret sitesi siparişlerin kargo durumunu Go ile yazılmış bir servisle çekiyor. Yapıştırılan yanıt TR0000000001 numaralı gönderiye ait: durum “Dağıtımda”, iki hareket (27.10.2026 09:15 Ankara Aktarma; 28.10.2026 08:40 Çankaya Şube, kurye adıyla) ve teslim_tarihi null. Ayarlar: Go, ad KargoTakip, girinti 2 boşluk.
- Go’da girinti sekmeyle yapılır, gofmt’in istediği gibi: 2 boşluk seçeneği sekmeye dönüşür, 4 boşluk ise 4 boşluk kalır.
- Alan adları Go’nun dışa aktarması için büyük harfle başlar: takip_no TakipNo, teslim_tarihi TeslimTarihi olur. json etiketi asıl adı korur.
- kurye yalnızca ikinci harekette var, bu yüzden string ve omitempty. hareketler dizisindeki ögeler için Hareketler adında tek bir struct yazılır.
- teslim_tarihi örnekte yalnızca null olduğu için türü bilinemez ve any olur. Teslim edilmiş bir gönderinin yanıtını da diziye katarsanız *string çıkar.
| Alan | Yanıtta | Go türü |
|---|---|---|
| takip_no | "TR0000000001" | string |
| durum | "Dağıtımda" | string |
| hareketler | 2 hareket | []*Hareketler |
| tarih | "2026-10-27 09:15" | string |
| kurye | yalnızca ikinci harekette | string, omitempty |
| teslim_tarihi | null | any |
2 struct çıkar: KargoTakip ve Hareketler. Elle bakmaya değer iki yer var: tek bir hareketi anlatan struct’a Hareket demek daha okunaklı olur, teslim_tarihi için de any yerine *string yazmak teslimden sonra gelecek tarihi karşılar.
Nasıl çalışır
- Gerçek bir yanıt yapıştırın. Uydurma bir örnek yerine gerçek bir kayıt daha iyidir.
- TypeScript, Go ya da Zod’u seçin.
- En üst türe ad verin ya da Root olarak bırakın.
- Sonucu kopyalayın ve okuyun: tek örnekten çıkarım bir ilk taslaktır, şartname değil.
Sık sorulan sorular
- Dizinin bütün ögelerine mi bakıyor, yalnızca ilkine mi?
- Hepsine. [{a:1},{a:1,b:2}] b’yi isteğe bağlı yapar, yok saymaz — üretilmiş türleri iki hafta sonra sinir bozucu hâle getiren hata tam da budur.
- null ile ne yapıyor?
- Daraltmaz, genişletir. Bir kez null olmuş alan, null olabilen alandır: TypeScript’te birleşim, Go’da işaretçi olur. API’nin gerçekte yaptığı da neredeyse her zaman budur.
- Çıktıya güvenebilir miyim?
- Başlangıç noktası olarak. Tek örnek size bir alanın enum olduğunu, bir sayının tam sayı olduğunu ya da bir metnin tarih olduğunu söyleyemez: okuyun ve daraltın. Yazmayı kısaltır, düşünmeyi değil.
- Sayılar neden tam sayı değil de number, Go’da float64 oluyor?
- Çünkü bir örnek, bir sayının her zaman tam olduğunu kanıtlayamaz: bugünkü 24 yarın 24.5 olabilir. TypeScript ve Zod number, Go float64 yazar. Bir kimlik ya da adet her zaman tam sayıysa Go’da int veya int64 yapın, Zod’da .int() ekleyin.
- JSON bir diziyle başlarsa ne olur?
- Tür o zaman tek bir ögeyi anlatır ve yazdığınız adı alır. Bütün ögeler okunur, yani yalnızca bazılarında olan bir alan isteğe bağlı çıkar. TypeScript’te son satıra OrderList = Order[] gibi bir liste türü de eklenir.
- Bir sunucuya bir şey gönderiliyor mu?
- Hayır. Tarayıcıda çalışır; yapıştırdığınız şey bilgisayarınızda kalır.