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ürjson.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
- encoding/json Tekrarı
- encoding/xml
- encoding/csv
- gob ve İkili Kodlama