irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Web Dünyasının Dili
Go, web servisleri (API) yazmak için çok popülerdir. Web'in dili de JSON'dur. Go'da JSON verisini bir Struct'a çevirmeye Unmarshal, Struct'ı JSON'a çevirmeye Marshal denir.Struct Tags (Etiketler)
Go'da değişken isimleri genellikle BuyukHarf (CamelCase) ile başlar ama JSON'da kucuk_harf (snake_case) yaygındır. Bu eşleştirmeyi yapmak için "backtick" (ters tırnak) içinde etiketler kullanılır.ÖNEMLİ: JSON'a dönüşecek alanların baş harfi MUTLAKA BÜYÜK olmalıdır (Exported). Küçük harfle başlayan alanlar gizlidir (Private) ve JSON kütüphanesi onları göremez.
Kod:
package main
import ("encoding/json""fmt")
type Urun struct {// Go tarafında "Ad", JSON tarafında "product_name" olacakAd string json:"product_name"Fiyat float64 json:"price"// "omitempty": Eğer stok 0 ise veya boşsa, JSON çıktısına hiç koymaStok int json:"stock,omitempty"// "-" : Bu alanı JSON'da tamamen görmezden gel (Şifre vb. için)Gizli string json:"-"}
func main() {// 1. MARSHAL (Struct -> JSON)p1 := Urun{Ad: "Laptop", Fiyat: 15000.50, Stok: 0, Gizli: "12345"}
jsonData, _ := json.Marshal(p1)<br>fmt.Println("JSON Çıktısı:", string(jsonData))<br>// Çıktı: {"product_name":"Laptop","price":15000.5} (Stok ve Gizli yok)<br><br>// 2. UNMARSHAL (JSON -> Struct)<br>jsonString := `{"product_name": "Mouse", "price": 250}`<br>var p2 Urun<br><br>// &p2: Veriyi içine yazması için pointer (adres) gönderiyoruz<br>json.Unmarshal([]byte(jsonString), &p2)<br><br>fmt.Println("Struct Çıktısı:", p2)<br>fmt.Println("Ürün Adı:", p2.Ad)<br>
}