0Pricing
Go Academy · Ders

encoding/json Tekrarı

JSON'u serileştirin ve serileştirmeden çıkarın

encoding/json Tekrarı, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. 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.

Go'da JSON

JSON, API'ler için en yaygın veri biçimidir. Go'nun standart encoding/json paketi, Go değerleri ile JSON metni arasında dönüşüm yapar.

Marshal: Go'dan JSON'a

json.Marshal, bir Go değerini JSON bayt dilimine dönüştürür. Yazdırmak için bunu bir dizeye dönüştürün.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	data := map[string]int{"a": 1, "b": 2}
	b, _ := json.Marshal(data)
	fmt.Println(string(b))
}

Bir Yapıyı Serileştirme

Yapılar alan alan serileştirilir. Dışa aktarılan alanlar JSON anahtarlarına dönüşür.

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name string
	Age  int
}

func main() {
	b, _ := json.Marshal(User{"Ann", 30})
	fmt.Println(string(b))
}

Unmarshal: JSON'dan Go'ya

json.Unmarshal, JSON baytlarını bir Go değerine ayrıştırır. Değişkeninizi doldurabilmesi için bir işaretçi verin.

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name string
	Age  int
}

func main() {
	var u User
	json.Unmarshal([]byte("{\"Name\":\"Bob\",\"Age\":25}"), &u)
	fmt.Println(u)
}

Anahtar Adları için Etiketler

Daha önce ele alındığı gibi anahtar adlarını kontrol etmek için json etiketlerini kullanın. Burada Name, JSON anahtarı name ile eşleşir.

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name string "json:\"name\""
}

func main() {
	b, _ := json.Marshal(User{"Ann"})
	fmt.Println(string(b))
}

Hataları Her Zaman Kontrol Edin

Hem Marshal hem de Unmarshal bir hata döndürür. Gerçek kodda bunu hiçbir zaman yok saymayın; biçimi bozuk JSON veya desteklenmeyen türler hatalara neden olur.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	var v int
	err := json.Unmarshal([]byte("not json"), &v)
	fmt.Println(err)
}

Eşlemelere Ayrıştırma

Verilerin yapısını önceden bilmiyorsanız map[string]interface{} içine ayrıştırın.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	var m map[string]interface{}
	json.Unmarshal([]byte("{\"x\":1,\"y\":\"hi\"}"), &m)
	fmt.Println(m["x"], m["y"])
}

Dilimler ve Diziler

JSON dizileri Go dilimlerine karşılık gelir. Bir dilimin serileştirilmesi JSON dizisi oluşturur.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	b, _ := json.Marshal([]string{"a", "b", "c"})
	fmt.Println(string(b))
}

Biçimli Yazdırma

json.MarshalIndent, insanların okuyabileceği bir çıktı için girintileme ekler.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	data := map[string]int{"a": 1}
	b, _ := json.MarshalIndent(data, "", "  ")
	fmt.Println(string(b))
}

Sayılar float64 Türündedir

interface{} içine ayrıştırırken tüm JSON sayıları Go'da float64 olur. Bir int'e ihtiyacınız varsa açıkça dönüştürün.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	var v interface{}
	json.Unmarshal([]byte("42"), &v)
	fmt.Printf("%T %v\n", v, v)
}

Gidiş Dönüş

Verileri JSON üzerinden kopyalamak için önce serileştirip sonra serileştirmeden çıkarabilirsiniz. Desteklenen türlerde değerler değişmeden geri gelir.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	orig := []int{1, 2, 3}
	b, _ := json.Marshal(orig)
	var back []int
	json.Unmarshal(b, &back)
	fmt.Println(back)
}

Hızlı Kontrol

json.Unmarshal işlevine neden bir işaretçi vermeniz gerekir?

Özet

encoding/json:

  • json.Marshal, Go değerlerini JSON'a dönüştürür
  • json.Unmarshal, JSON'u bir işaretçiye ayrıştırır
  • Etiketler anahtarları yeniden adlandırır; sayılar interface{} içine ayrıştırılırken float64 olur
  • Döndürülen hatayı her zaman kontrol edin

Sıkça Sorulan Sorular

“encoding/json Tekrarı” dersi ücretsiz mi?

Evet — “encoding/json Tekrarı” 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.

“encoding/json Tekrarı” dersinde ne öğreneceğim?

JSON'u serileştirin ve serileştirmeden çıkarın 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 1. dersidir.

“encoding/json Tekrarı” 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. encoding/json Tekrarı
  2. encoding/xml
  3. encoding/csv
  4. gob ve İkili Kodlama
← Go Academy Sayfasına Dön