JSON'dan Go Yapılarına Dönüştürücü
JSON verisinden bir json-to-go uyarlamasıyla Go struct tanımları üretir ve gofmt ile biçimlendirir. Anahtarlar json:"..." etiketli, dışa aktarılan CamelCase alanlara dönüşür; iç içe nesneler satır içi adsız struct, null ise any olur.
Üçüncü taraf REST API yanıtını json.Unmarshal ile okumak için struct yazmak.
Ne zaman kullanılır?
- Üçüncü taraf REST API yanıtını json.Unmarshal ile okumak için struct yazmak.
- Örnek verilerden bir Go HTTP işleyicisi için istek ve yanıt türlerini hazırlamak.
Nasıl kullanılır?
- Soldaki düzenleyiciye bir JSON nesnesi veya dizisi yapıştırın.
- Üretilen struct'ı inceleyin; kök türün adı her zaman AutoGenerated olur.
- Paketinize kopyalayın, türü yeniden adlandırın ve tekrar kullanacaksanız satır içi struct'ları adlandırılmış türlere çıkarın.
JSON
{
"id": 42,
"user_name": "ada",
"score": 9.5,
"active": true,
"deleted_at": null,
"tags": ["go", "json"],
"address": { "city": "Tokyo", "zip": "100-0001" }
}Go struct
type AutoGenerated struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Score float64 `json:"score"`
Active bool `json:"active"`
DeletedAt any `json:"deleted_at"`
Tags []string `json:"tags"`
Address struct {
City string `json:"city"`
Zip string `json:"zip"`
} `json:"address"`
}Ayrıntılar ve sınırlamalar
Üretim tarayıcıda yapılır. Tür adı, satır içi veya adlandırılmış struct seçimi ve etiketler için ayar yoktur.
Kısaltmalar büyük harfle yazılır (id, ID olur), snake_case ise CamelCase'e dönüşür; özgün anahtar json etiketinde korunur.
Tam sayılar int (büyükse int64), ondalıklılar float64 olur. null, boş ve karma diziler any veya []any olur.
Dizideki nesneler farklıysa bazı nesnelerde bulunmayan anahtarlara ,omitempty eklenir.
FAQ
Kökteki bir JSON dizisini dönüştürebilir miyim?
Evet. Dizideki tüm nesnelerin alanlarını birleştirerek type AutoGenerated []struct{...} üretir.
null alanım neden any türünde?
null değeri tür bilgisi taşımaz. nil desteğini korumak için any yerine *string veya *time.Time gibi bir işaretçi kullanın.
Adlandırılmış iç içe struct üretir mi?
Hayır. İç içe nesneler satır içi adsız struct olur. Başvuru yapmanız gerekiyorsa bunları elle adlandırılmış türlere taşıyın.