GoDasturchi
Working with Dynamic JSON

Working with Dynamic JSON

Dinamik JSON bilan ishlash

Har doim ham JSON'ning shakli oldindan ma'lum bo'lavermaydi. Bunday holda struct o'rniga map[string]interface{} ishlatiladi — "har qanday kalit, har qanday qiymat" degani.

example.go
package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	raw := []byte(`{"name":"Zilola","active":true,"score":97}`)

	var m map[string]interface{}
	err := json.Unmarshal(raw, &m)
	if err != nil {
		fmt.Println("xato:", err)
		return
	}
	fmt.Println(m["name"])
	fmt.Println(m["active"])
}

interface{} (yoki yangi Go'larda any) — "men hali qanday tur ekanini bilmayman" degan tur. map[string]interface{} esa har qanday JSON obyektini qabul qila oladigan universal quti. Kamchiligi: qiymatlarni ishlatishdan oldin ularning haqiqiy turini aniqlashtirish (type assertion) kerak bo'ladi — buni oldingi "Interfaces & Polymorphism" kursida ko'rgan edingiz.

>_ Exercise

Noma'lum shakldagi JSON'dan kerakli qiymatlarni oling.

  • raw'ni map[string]interface{} ga Unmarshal qiling
  • m["city"] qiymatini chop eting
  • m["population"] qiymatini chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

JSON'ning shakli oldindan noma'lum bo'lsa, map[string]interface{} universal konteyner sifatida ishlatiladi — lekin JSON'dagi barcha sonlar float64 sifatida keladi.

NEXT UP

JSON Streaming

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Working with Dynamic JSON

Dinamik JSON bilan ishlash

Har doim ham JSON'ning shakli oldindan ma'lum bo'lavermaydi. Bunday holda struct o'rniga map[string]interface{} ishlatiladi — "har qanday kalit, har qanday qiymat" degani.

example.go
package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	raw := []byte(`{"name":"Zilola","active":true,"score":97}`)

	var m map[string]interface{}
	err := json.Unmarshal(raw, &m)
	if err != nil {
		fmt.Println("xato:", err)
		return
	}
	fmt.Println(m["name"])
	fmt.Println(m["active"])
}

interface{} (yoki yangi Go'larda any) — "men hali qanday tur ekanini bilmayman" degan tur. map[string]interface{} esa har qanday JSON obyektini qabul qila oladigan universal quti. Kamchiligi: qiymatlarni ishlatishdan oldin ularning haqiqiy turini aniqlashtirish (type assertion) kerak bo'ladi — buni oldingi "Interfaces & Polymorphism" kursida ko'rgan edingiz.

>_ Exercise

Noma'lum shakldagi JSON'dan kerakli qiymatlarni oling.

  • raw'ni map[string]interface{} ga Unmarshal qiling
  • m["city"] qiymatini chop eting
  • m["population"] qiymatini chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

JSON'ning shakli oldindan noma'lum bo'lsa, map[string]interface{} universal konteyner sifatida ishlatiladi — lekin JSON'dagi barcha sonlar float64 sifatida keladi.

NEXT UP

JSON Streaming