0Pricing
Go Academy · Ders

JSON Kodlama ve Kod Çözme

Marshal, Unmarshal ve yapı etiketleri

JSON Kodlama ve Kod Çözme, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

encoding/json genel bakış

Go'nun encoding/json paketi, yapı etiketlerini ve yansımayı kullanarak Go değerlerini JSON'a Marshal eder ve JSON'u yeniden Go değerlerine Unmarshal eder.

json.Marshal

json.Marshal, bir Go değerini JSON baytlarına dönüştürür. Desteklenmeyen türler (kanallar, işlevler, karmaşık sayılar) için bir hata döndürür.

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}
u := User{Name: "Alice", Age: 30}
data, err := json.Marshal(u)
fmt.Println(string(data)) // {"name":"Alice","age":30}

json.Unmarshal

json.Unmarshal, JSON'u bir Go değerine çözümler. Hedef bir işaretçi olmalıdır.

var u User
err := json.Unmarshal(data, &u)
fmt.Println(u.Name) // "Alice"

Yapı etiketleri

Alan adlarını denetlemek, boş değerleri atlamak ve dışa aktarılmamış alanları yok saymak için json: yapı etiketlerini kullanın.

type Product struct {
    ID    int    `json:"id"`
    Price float64 `json:"price,omitempty"` // omit if zero
    secret string // unexported: ignored
}

json.Encoder / json.Decoder

Akış işlemleri (HTTP yanıt ve istek gövdeleri) için tüm yükü belleğe almak yerine Marshal/Unmarshal işlemlerinin yerine Encoder ve Decoder kullanın.

// Writing
json.NewEncoder(w).Encode(user)
// Reading
var u User
json.NewDecoder(r.Body).Decode(&u)

map[string]any içine kod çözme

Bilinmeyen JSON'u genel amaçlı bir eşlemeye çözümleyin:

var m map[string]any
json.Unmarshal(data, &m)
fmt.Println(m["name"])

json.Number

Varsayılan olarak, genel amaçlı eşlemelerdeki sayılar float64 olarak çözümlenir. Hassasiyeti koruyarak bunları json.Number olarak çözümlemek için decoder.UseNumber() kullanın.

dec := json.NewDecoder(r)
dec.UseNumber()
var m map[string]any
dec.Decode(&m)

Özel Marshal işlemi

Bir türün kodlama ve kod çözme işlemlerini denetlemek için json.Marshaler veya json.Unmarshaler uygulayın; örneğin özel tarih biçimleri için.

func (d Date) MarshalJSON() ([]byte, error) {
    return json.Marshal(d.Format("2006-01-02"))
}

Alanları atlama

Sıfır değerleri atlamak için omitempty kullanın. Değerinden bağımsız olarak bir alanı JSON çıktısından her zaman dışlamak için json:"-" kullanın.

Hidden string `json:"-"`

null değerini işleme

JSON null değeri, skalerler için bir Go sıfır değerine çözülür veya bir işaretçiyi nil olarak ayarlar. Nil işaretçiyi null olarak Marshal edin.

Biçimlendirilmiş çıktı

İnsanların okuyabileceği çıktı için json.MarshalIndent kullanın:

data, _ := json.MarshalIndent(u, "", "  ")

Hızlı kontrol

json:"name,omitempty" yapı etiketi ne yapar?

Özet: JSON kodlama ve kod çözme

Temel noktalar:

  • Bellek içi işlemler için json.Marshal/Unmarshal; akışlar için Encoder/Decoder
  • Yapı etiketleri adları, omitempty davranışını ve dışlamayı denetler
  • Özel türler Marshaler/Unmarshaler uygular
  • Hata ayıklama çıktısı için json.MarshalIndent kullanın

Sıkça Sorulan Sorular

“JSON Kodlama ve Kod Çözme” dersi ücretsiz mi?

Evet — “JSON Kodlama ve Kod Çözme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“JSON Kodlama ve Kod Çözme” dersinde ne öğreneceğim?

Marshal, Unmarshal ve yapı etiketleri Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“JSON Kodlama ve Kod Çözme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. os ve bufio ile Dosya Okuma
  2. Dosya ve Geçici Dosya Yazma
  3. JSON Kodlama ve Kod Çözme
  4. JSON ve CSV Akışı
← Go Academy Sayfasına Dön