GoDasturchi
JSON Marshaling and Unmarshaling

JSON Marshaling and Unmarshaling

JSON marshaling va unmarshaling

YAML Data Pipeline kursida siz YAML'ni qo'lda, strings.Split bilan tahlil qildingiz — chunki bu muhitda tashqi YAML kutubxonasi yo'q edi. JSON uchun esa Go standart kutubxonasining o'zida to'liq yechim bor: encoding/json.

example.go
type Product struct {
    Name  string  `json:"name"`
    Price float64 `json:"price"`
}

p := Product{Name: "laptop", Price: 999.99}
data, _ := json.Marshal(p)
// data: {"name":"laptop","price":999.99}

var p2 Product
json.Unmarshal(data, &p2)

Struct maydonlaridagi orqa qo'shtirnoqli yozuvlar — struct teglari (tags): json:"name" Go'ga "bu maydon JSON'da name deb nomlansin" deydi (Go maydon nomi Name katta harf bilan, JSON konvensiyasi esa odatda kichik harf bilan). json.Marshal struct'ni JSON matniga aylantiradi (marshaling), json.Unmarshal esa teskarisini qiladi (unmarshaling) — ikkinchisi Pointers & Memory kursidagi "joyida o'zgartirish" g'oyasidan foydalanadi: &p2 pointer sifatida uzatiladi, shunda Unmarshal uning maydonlarini to'g'ridan-to'g'ri to'ldira oladi.

>_ Exercise

Name string (json:"name") va Price float64 (json:"price") maydonlariga ega Product struct'ini yozing. mainda Product{Name: "laptop", Price: 999.99} yarating, uni json.Marshal bilan JSON'ga aylantirib chop eting, so'ngra json.Unmarshal bilan yangi Productga qaytarib, uning Name va Pricesini chop eting.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

encoding/json paketi struct teglari (json:"...") yordamida Go struct'lari va JSON matni orasida avtomatik aylantirish qiladi. Marshal struct'dan JSON yasaydi, Unmarshal esa pointer orqali struct'ni JSON'dan to'ldiradi.

NEXT UP

JSON Configuration Files

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

JSON Marshaling and Unmarshaling

JSON marshaling va unmarshaling

YAML Data Pipeline kursida siz YAML'ni qo'lda, strings.Split bilan tahlil qildingiz — chunki bu muhitda tashqi YAML kutubxonasi yo'q edi. JSON uchun esa Go standart kutubxonasining o'zida to'liq yechim bor: encoding/json.

example.go
type Product struct {
    Name  string  `json:"name"`
    Price float64 `json:"price"`
}

p := Product{Name: "laptop", Price: 999.99}
data, _ := json.Marshal(p)
// data: {"name":"laptop","price":999.99}

var p2 Product
json.Unmarshal(data, &p2)

Struct maydonlaridagi orqa qo'shtirnoqli yozuvlar — struct teglari (tags): json:"name" Go'ga "bu maydon JSON'da name deb nomlansin" deydi (Go maydon nomi Name katta harf bilan, JSON konvensiyasi esa odatda kichik harf bilan). json.Marshal struct'ni JSON matniga aylantiradi (marshaling), json.Unmarshal esa teskarisini qiladi (unmarshaling) — ikkinchisi Pointers & Memory kursidagi "joyida o'zgartirish" g'oyasidan foydalanadi: &p2 pointer sifatida uzatiladi, shunda Unmarshal uning maydonlarini to'g'ridan-to'g'ri to'ldira oladi.

>_ Exercise

Name string (json:"name") va Price float64 (json:"price") maydonlariga ega Product struct'ini yozing. mainda Product{Name: "laptop", Price: 999.99} yarating, uni json.Marshal bilan JSON'ga aylantirib chop eting, so'ngra json.Unmarshal bilan yangi Productga qaytarib, uning Name va Pricesini chop eting.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

encoding/json paketi struct teglari (json:"...") yordamida Go struct'lari va JSON matni orasida avtomatik aylantirish qiladi. Marshal struct'dan JSON yasaydi, Unmarshal esa pointer orqali struct'ni JSON'dan to'ldiradi.

NEXT UP

JSON Configuration Files