Geliştirici / JSON

JSON'dan Go Struct'a

Bir JSON örneği yapıştırın; dışa aktarılan alan adları, Go'nun linter'larının beklediği kısaltmalar ve json etiketleriyle, kodunuza yapıştırmaya hazır Go struct tanımları alın.

JSON'dan Go Struct'a: Dönüştürücü, tarayıcıda JSON'u okur ve her nesne için bir struct yazar. Anahtarlar, golint'in önerdiği şekilde ID, URL ve HTTP gibi kısaltmaları büyük harflerle yazılmış dışa aktarılan CamelCase adlarına dönüşür. Her alan, özgün anahtarını bir json etiketinde korur ve kod, gofmt'ın biçimlendireceği şekilde düzenlenir. Bir dizideki nesneler birleştirilir; bu nedenle bazı nesnelerde eksik olan bir anahtara omitempty eklenir ve bazen null olan bir anahtar işaretçiye dönüştürülür. Aynı konumda ondalık sayı görülmediği sürece tam sayılar int64 olur; ondalık sayı görülürse float64 kullanılır. Sunucuya hiçbir dosya yüklenmeden tarayıcınızda %100 yerel olarak çalışır.

Çalıştırma sayısı
Tarayıcınızda
Maliyet
Ücretsiz · kayıt gerekmez
Kullanılabilirlik
Kullanıma hazır
JSON'dan Go struct'ınaYerel işleme

Tamamen tarayıcınızda çalışır

Oluşturun

type User struct {
	ID        int64    `json:"id"`
	UserName  string   `json:"user_name"`
	AvatarURL string   `json:"avatar_url"`
	Score     float64  `json:"score"`
	Tags      []string `json:"tags"`
	Address   Address  `json:"address"`
}

type Address struct {
	City    string `json:"city"`
	ZipCode string `json:"zip_code"`
}

Bir dizideki bazı nesnelerde bulunmayan anahtarlara omitempty eklenir; bazen null olan anahtarlar işaretçiye dönüştürülür. Türleri API'nizin belgeleriyle karşılaştırın: örnek yalnızca içerdiği değerleri gösterir.

Örnekten türe ulaşmak

Go, JSON verisini encoding/json ile struct'lara çözümler. Her anahtarı json etiketiyle bir alana eşleştirir; etiket yoksa büyük-küçük harf farkını göz ardı ederek ada göre eşleştirir. Yalnızca büyük harfle başlayan dışa aktarılmış alanlar doldurulur; bu nedenle buradaki her alan büyük harfle yazılır ve etiketinde özgün anahtarını korur.

Bir örnek yalnızca içerdiği şeyleri gösterir. Kullanıcılardan birinin email adresinin eksik olduğu bir liste, dönüştürücüye email alanının isteğe bağlı olduğunu anlatır; tek bir nesne bunu anlatamaz. Birden fazla temsili nesneniz varsa bunları bir dizi içinde yapıştırın ve sonucu API belgeleriyle karşılaştırın. JSON biçimlendirici, uzun bir yanıtın yapısını önce gözden geçirmenize yardımcı olur.

Diğer diller ve şemalar

Aynı örnek, aynı API'yi okuyan bir ön yüz için JSON to TypeScript dönüştürücüsüyle TypeScript arayüzlerine veya sınırda payload'ları doğrulamak için bir JSON Schema şemasına dönüştürülebilir.

Nasıl kullanılır?

  1. API yanıtı gibi bir JSON nesnesi veya dizisi yapıştırın.
  2. Üst düzey türe ad verin ve ayrı ya da iç içe struct'ları seçin.
  3. Go kodunu kopyalayın.

Gizlilik ve sınırlamalar

JSON'unuz tarayıcıda dönüştürülür ve hiçbir zaman yüklenmez.

İlgili araçlar

Sık sorulan sorular

user_id neden UserID olarak adlandırılıyor da UserId olarak adlandırılmıyor?

Go stili, kısaltmaları tek bir büyük-küçük harf düzeninde yazar: UserID, APIKey ve AvatarURL. Dönüştürücü, bu kuralı yaygınlaştıran linter golint'in kısaltma listesini kullanır.

Bir alan ne zaman omitempty veya işaretçi alır?

Örnek bir nesne dizisiyse ve bazı nesnelerde bir anahtar eksikse alana omitempty eklenir; böylece serileştirme sırasında alan boş olduğunda dışarıda bırakılır. Bazı nesnelerde bir anahtar null ise alan işaretçiye dönüştürülür; böylece nil, null değerini temsil edebilir. İsterseniz her alana omitempty de ekleyebilirsiniz.

Neden int64 ve float64 kullanılıyor?

JSON'da tek bir sayı türü vardır. Ondalık noktası olmadan yazılan bir değer int64, kesirli bir değer ise float64 olur. Bir ID 2^53 değerini aşabiliyorsa veya aslında kılık değiştirmiş bir metinse türü elle değiştirin: bir örnek yalnızca içerdiği değerleri gösterir.

null veya boş dizilere ne olur?

Yeterli bilgi olmadığında, her zaman null olan bir alan veya boş bir dizi any (interface{}) türünü alır; bu tür her şeyi kabul eder. Gerçek türü öğrendiğinizde bunu değiştirin.

Ücretsiz araç · tarayıcınızda kez çalıştırma · hesap gerekmez