JSON İşleme: struct tags ile JSON Verisi Ayrıştırma

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

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 -&gt; Struct)<br>jsonString := `{"product_name": "Mouse", "price": 250}`<br>var p2 Urun<br><br>// &amp;p2: Veriyi içine yazması için pointer (adres) gönderiyoruz<br>json.Unmarshal([]byte(jsonString), &amp;p2)<br><br>fmt.Println("Struct Çıktısı:", p2)<br>fmt.Println("Ürün Adı:", p2.Ad)<br>
}

Sonuç​

Go'nun standart encoding/json kütüphanesi oldukça güçlüdür. Reflection (Yansıma) kullanarak struct etiketlerini okur ve dönüşümü otomatik yapar.
 
Geri
Üst