← Bloga dön

2025-06-15

Go Struct'ları ve JSON Tag'leri: Eksiksiz Rehber

Go'nun struct tag'leri sihir gibi görünür ama basit kurallara uyar. Onlara hakim olun ve bir daha JSON serileştirme sürprizi yaşamazsınız.

Struct Tag'leri Nedir?

Go struct tag'leri, yansıma tabanlı kütüphanelere meta veri sağlayan struct alanlarına eklenmiş dize literalleridir:

type User struct {
    ID       int64  `json:"id"`
    FullName string `json:"full_name"`
    Email    string `json:"email,omitempty"`
    password string // unexported — never serialized
}

encoding/json paketi, Go alan adları ile JSON anahtarları arasında eşleme yapmak için bu tag'leri okur.

omitempty Yönergesi

omitempty, alan tipi için sıfır değeri (0, "", false, nil) tutuyorsa marshaling sırasında alanı atlar:

Email string `json:"email,omitempty"`

Bu, PATCH isteklerindeki isteğe bağlı alanlar için zorunludur — kullanıcı e-posta alanına dokunmadığında "email": "" göndermek istemezsiniz.

Dikkat: omitempty, struct'larla beklendiği gibi çalışmaz. Boş bir struct {} hiçbir zaman atlanmaz. Bunun yerine bir işaretçi *Address kullanın.

- Tag'i: Alanları Açıkça Dışlama

type User struct {
    Password string `json:"-"`
}

"-" tag'i, alanı hem marshaling hem de unmarshaling işlemlerinden tamamen dışlar. Yalnızca dışa aktarılmamış alanlara güvenmeyin — gelecekteki bir yeniden düzenleme yanlışlıkla birini dışa aktarabilir.

Null Olabilen Alanlar için İşaretçi Alıcılar

type User struct {
    DeletedAt *time.Time `json:"deleted_at,omitempty"`
}

nil bir işaretçi JSON null'a marshal edilir. omitempty ile birleştirildiğinde, nil bir işaretçi tamamen atlanır. Bu size üç durum sağlar: mevcut, null ve yok.

Yaygın Hatalar

  1. Sayfalama imleçlerinde omitempty'yi unutmak — birçok API'yi bozan "cursor": "" gönderir
  2. Gömülü struct'larda struct tag'leri kullanmak — tag'ler gömülen struct üzerinde değil, gömülü struct üzerinde olmalıdır
  3. Büyük/küçük harf duyarsız unmarshaling'in her zaman çalıştığını varsaymak — çalışır, ancak daha yavaştır; performans açısından kritik yollarda kesin tag'ler kullanın

Dönüştürücümüz, toggle etkinleştirildiğinde omitempty dahil doğru JSON tag'leriyle Go struct'larını otomatik olarak üretir.

Dosyalarınız cihazınızdan hiçbir zaman ayrılmaz. %100 Güvenli ve Gizli.

Ses veya video dönüştürmeniz mi gerekiyor? mp3-converters.com — ücretsiz MP4/WAV/M4A→MP3 dönüştürücü, %100 tarayıcı tabanlı.

PDF dönüştürmeniz mi gerekiyor? pdf-word-converter.com — ücretsiz PDF→Word, PDF→HTML ve HTML→PDF dönüştürücü, %100 tarayıcı tabanlı.

Çevrimdışı çalışır — tarayıcınızın  "Uygulamayı yükle"  seçeneğiyle uygulama olarak yükleyin.

Gizlilik Politikası

© 2026 json-convert.com — Ücretsiz, açık ve gizli.