Struct etiketleri
- Go kursu
- Orta seviye
- Ders 60/80
- 4 dk
json:"..." etiketleriyle alan adlarını kontrol etmeyi öğrenirsin.
Struct etiketleri
JSON alan adları genellikle küçük harflidir. Struct etiketi Go alan adını JSON adına eşler ve ek seçenekler verir:
type Kullanici struct {
ID int `json:"id"`
Ad string `json:"ad"`
Eposta string `json:"eposta,omitempty"`
Sifre string `json:"-"`
}omitempty sıfır değerli alanı çıktıdan atar; - alanı her zaman atlar (parola gibi gizli alanlar için).
Etiket sözdizimi
Etiketler ters tırnak içinde anahtar:"değer" çiftleridir; birden çok kütüphane aynı alanda kendi anahtarını kullanabilir:
Ad string `json:"ad" db:"ad_soyad" validate:"required"`Çözerken (Unmarshal) JSON anahtarları etiketlere büyük/küçük harf duyarsız eşlenir. Bilinmeyen anahtarlar sessizce yok sayılır; bunu reddetmek için Decoder.DisallowUnknownFields() kullanılır.
Uygulama Etiketli kodlama
type User struct yaz: ID int → "id", Name string → "name", Email string → "email,omitempty", Password string → "-". User{ID: 1, Name: "Ada", Password: "x"} değerini kodlayıp yazdır.
Başlangıç kodu
package main
import (
"encoding/json"
"fmt"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"encoding/json"
"fmt"
)
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email,omitempty"`
Password string `json:"-"`
}
func main() {
b, err := json.Marshal(User{ID: 1, Name: "Ada", Password: "x"})
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(b))
}Beklenen çıktı
{"id":1,"name":"Ada"}
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>`json:"adet,omitempty"`</code> etiketli <code>int</code> alanın değeri 0 ise ne olur?
- "adet":null yazılır
- Marshal hata verir
- Alan JSON'a hiç yazılmaz Doğru cevap
- "adet":0 yazılır
Açıklama: omitempty sıfır değerleri (0, "", false, nil, boş dilim/map) atar; 0'ın anlamlı olduğu alanlarda dikkatli kullanılmalı ya da *int tercih edilmelidir.
2 Gizli alan
type Hesap struct {
Ad string `json:"ad"`
Token string `json:"____"`
}
type Hesap struct {
Ad string `json:"ad"`
Token string `json:"-"`
}
Açıklama: json:"-" alanı her zaman kodlamadan ve çözmeden çıkarır.
3 Etiket ve etkisi
| Kavram | Anlamı |
|---|---|
json:"id" |
Adı değiştirir |
json:",omitempty" |
Sıfırsa atlar |
json:"-" |
Her zaman atlar |
json:",string" |
Sayıyı metin yazar |