Rumah >pembangunan bahagian belakang >Golang >Bagaimana Mengendalikan Respons JSON dengan Kekunci Dinamik dalam Go?

Bagaimana Mengendalikan Respons JSON dengan Kekunci Dinamik dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-01 18:58:13290semak imbas

How to Handle JSON Responses with Dynamic Keys in Go?

Mengendalikan Respons JSON dengan Kekunci Dinamik di Golang

Apabila menghadapi respons JSON dengan kekunci sewenang-wenangnya, adalah sukar untuk mencipta struct yang sepadan. Satu contoh sedemikian ialah respons JSON yang disediakan yang mengandungi peta bersarang dengan kekunci yang berbeza-beza yang mewakili saiz imej.

Untuk menangani isu ini, pertimbangkan untuk menggunakan struktur data berasaskan peta. Di Golang, peta ialah koleksi pasangan nilai kunci dengan kekuncinya adalah rentetan.

Penyelesaian:

Tentukan struct untuk mewakili kekunci "Item" luar :

type Items struct {
    Name string `json:"name"`
    Images map[string][]ImageUrl `json:"image_urls"`
}

Di sini, medan "image_urls" diisytiharkan sebagai peta dengan kuncinya adalah rentetan (mewakili saiz imej) dan nilai adalah kepingan struct ImageUrl.

Struktur ImageUrl:

type ImageUrl struct {
    Url string `json:"url"`
    Width, Height int `json:"width,height"`
}

Struktur ini mewakili URL imej individu dan dimensinya.

Penggunaan:

Untuk nyahmarshal JSON ke dalam struct Items, gunakan:

var items Items
json.Unmarshal(jsonData, &items)

Faedah Menggunakan Peta:

  • Membolehkan pengendalian kunci dinamik.
  • Peta adalah cekap untuk mencari dan mendapatkan semula.
  • Menyediakan yang mudah dan cara yang fleksibel untuk mewakili data bersarang.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Respons JSON dengan Kekunci Dinamik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn