JSON'dan Go Struct'a

Bir JSON nesnesi yapıştırın ve ona ait Go struct'larını alın: her nesne için bir struct, her liste için bir dilim ve her adı yazıldığı gibi tutan bir json etiketi.

Ücretsiz Tarayıcınızda çalışır Kontrol: 12 Kasım 2026 Perşembe

JSON metninin tamamı, en üstte küme parantezi olan. Adlar sıralarını, sayılar basamaklarını korur. Hiçbir şey gönderilmez ya da saklanmaz.

Dıştaki struct'ın adı. Harf, rakam ve alt çizgi kullanın; harfle başlayın.

omitempty seçeneğini ekler; böylece alan boşken encoding/json onu çıktıdan çıkarır.

Sonuç

Go kodu — Kopyalayın ya da models.go olarak indirin.
Denetim — JSON çevrilebiliyorsa yeşil; değilse kırmızı renkte yeri ve nedeni gösterir.
Go kodu

Bu araç tarayıcınızda çalışır. Girdiğiniz bilgiler bize gönderilmez.

Nasıl kullanılır?

  1. JSON nesnesini JSON nesnesi kutusuna yapıştırın. Tüm metin, en üstte küme parantezli tek bir nesne olmalı.
  2. Bir Ana struct adı yazın, örneğin Urun, ve isterseniz Her etikete omitempty ekle seçeneğini işaretleyin.
  3. Denetim satırına bakın. Yeşil nesnenin çevrildiğini; kırmızı ise sorunun yerini gösterir.
  4. Go kodu çıktısını paket satırı olan bir dosyaya kopyalayın ya da models.go olarak indirin.

Go türleri nasıl seçilir

Her JSON değeri onu tutacak Go türünü alır. Metin string, true ya da false bool olur. JSON'un bu türlere geri nasıl okunacağı, encoding/json paketinin Unmarshal kurallarıyla belirlenir.

  • 64 bite sığan bir tam sayı int64 olur. 1.0 ya da 2e3 gibi noktalı ya da üslü bir sayı float64 olur; int64'e sığmayacak kadar büyük bir tam sayı da öyle.
  • Bir null any olur. Başka türden bir değerin yanında duran null o türü alır, çünkü null, başka türden bir Go değerini değiştirmeden bırakır.
  • Bir nesne struct olur; bir liste, öğelerinin ortak türünü alır. Bir listedeki nesneler tek bir struct'ta birleşir, karışık türdeki liste ise []any olur.
  • Boş bir nesne boş bir struct, boş bir liste ise []any olur.

Adlar, etiketler ve çakışmalar

Her alan adını JSON adından alır: sözcükler birleşir ve her birinin ilk harfi büyük yazılır, bu yüzden kullanici-adi, KullaniciAdi olur. Go belirtimi ilk karakteri büyük harf olan adı dışa açık sayar; alan adı da bu kurala uyar. json etiketi adı yazıldığı gibi tutar, böylece JSON geri okunduğunda aynı anahtar eşleşir.

Aynı Go adını veren iki ad bir sayı alır (AB ve AB2 gibi), zaten kullanılmış bir ada sahip struct de bir sayı alır. Bir listenin öğesi, listenin adından alınır: products bir Product struct'ı verir; çoğul kuralı olmayan ad sonuna Item eki alır.

  • Virgül, tek tire ya da hiç karakter içeren bir ad json etiketi olamaz; araç bu anahtarı adıyla gösterir ve durur.
  • omitempty açıkken her etikete bu seçenek eklenir. Araç ana struct adının ilk harfini büyütür; örneğin urun, Urun olur.

Aracın yapmadıkları

  • Paket satırı ya da import eklemez. Kodu kendi paket satırı olan bir dosyaya yapıştırın.
  • İsteğe bağlı alanlar için işaretçi kullanmaz. JSON'da eksik ya da null olan bir alan, sıfır değeri tutan alandan ayrılmaz.
  • Go'nun yaygın kısaltmalarına göre adları değiştirmez; id, Id olur. Kod stiliniz ID istiyorsa adı elle değiştirin.

Örnek: iki ürünlü, sahibi olan bir sipariş

Aşağıdaki JSON bir tam sayı, bir ondalıklı sayı, bir nesne ve iki nesneden oluşan bir liste içerir. Tablo her JSON adının hangi Go alanına döndüğünü gösterir. Araç tablonun altında üç struct yazar; dıştaki struct Order'dır.

JSON adı Go alanı Go türü Etiket
id Id int64 json:"id"
ratio Ratio float64 json:"ratio"
owner Owner Owner json:"owner"
items Items []Item json:"items"

Sık sorulan sorular

Tam sayı neden int değil de int64 oluyor?

int64 sabit 64 bitlik işaretli bir tam sayı türüdür ve -9223372036854775808 ile 9223372036854775807 arasındaki her tam sayıyı tutar. Araç sığan her tam sayı için bunu kullanır, böylece değer taşmaz. Kodunuz gerektiriyorsa türü elle int yapabilirsiniz.

Null neden any oluyor?

Go'da tek başına bir null tutan bir tür yoktur, bu yüzden araç her değeri tutan any türünü kullanır. Başka türden bir değerin yanındaki null o türü alır; çünkü encoding/json bir null okurken başka türden bir Go değerini değiştirmez.

Alanım neden ID değil de Id diye çıkıyor?

Araç her sözcüğün ilk harfini büyütür ve Go'nun yaygın kısaltmalarını uygulamaz; bu yüzden id, Id olur. json etiketi yine id kalır, veri aynı biçimde okunur. Kod stiliniz ID istiyorsa alanın adını değiştirin.

Hangi Go sürümü gerekli?

Çıktı null için any kullanır ve any, Go 1.18 ile eklenen interface{} takma adıdır. Kodunuz daha eski bir sürümdeyse any yerine interface{} yazın; aynı türdür.

Araç bazı adları neden kabul etmiyor?

Bir json etiketi adı tutar, seçenekler ise virgülden sonra gelir; bu yüzden virgül içeren bir ad etikete yazılamaz. Tek tire alanı gizler, o yüzden o ad da kabul edilmez.

Yapıştırdığım JSON bir yere gönderiliyor mu?

Hayır. Çevirme tarayıcınızda yapılır ve yapıştırdığınız hiçbir şey saklanmaz ya da sunucumuza gönderilmez. Güvenmediğiniz bir sayfaya parola ya da erişim anahtarı yapıştırmayın.

Kaynaklar

Rakamlar ve metin en son 12 Kasım 2026 Perşembe tarihinde kontrol edildi.

Sitenin çalışması için gerekli çerezleri kullanıyoruz. İzin verirseniz Google, size özel reklamlar göstermek için reklam çerezleri de kullanır. Reddederseniz yine reklam görürsünüz, ancak bu reklamlar kişiselleştirilmez.