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
- os ve bufio ile Dosya Okuma
- Dosya ve Geçici Dosya Yazma
- JSON Kodlama ve Kod Çözme
- JSON ve CSV Akışı