Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengendalikan Respons JSON Dinamik dengan Kekunci Tidak Dapat Diramalkan dengan Cekap dalam Go?

Bagaimanakah Saya Boleh Mengendalikan Respons JSON Dinamik dengan Kekunci Tidak Dapat Diramalkan dengan Cekap dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-11-29 01:37:11345semak imbas

How Can I Efficiently Handle Dynamic JSON Responses with Unpredictable Keys in Go?

Pemetaan JSON Dinamik dalam Go Menggunakan Peta

Dalam Go, memetakan respons JSON dinamik dengan kekunci yang tidak dapat diramalkan boleh menjadi satu cabaran. Walau bagaimanapun, menggunakan peta menawarkan penyelesaian yang fleksibel.

Pertimbangkan tindak balas JSON berikut, dengan kekunci berbeza:

{
"items": [
{"name": "thing",
"image_urls": {
"50x100": [{
"url": "http://site.com/images/1/50x100.jpg",
"width": 50,
"height": 100
}, {
"url": "http://site.com/images/2/50x100.jpg",
"width": 50,
"height": 100
}],
"200x300": [{
"url": "http://site.com/images/1/200x300.jpg",
"width": 200,
"height": 300
}],
"400x520": [{
"url": "http://site.com/images/1/400x520.jpg",
"width": 400,
"height": 520
}]
}
}
]
}

Untuk menangkap sifat dinamik ini, cipta struct berasaskan peta. Peta dalam Go membenarkan kunci dan nilai sewenang-wenangnya, menjadikannya sesuai untuk senario ini.

type Items map[string][]ImageURL

Di sini, struktur Item ialah peta dengan kekunci rentetan (mewakili kekunci JSON yang berbeza-beza) dan nilai jenis [] ImageURL.

Untuk menggunakan struct ini, tentukan struct ImageURL untuk imej individu entri:

type ImageURL struct {
    URL    string
    Width  int
    Height int
}

Kini, anda boleh menyahmarshal respons JSON terus ke dalam struct Item:

err := json.Unmarshal(data, &items)
if err != nil {
    // Handle error
}

Pendekatan ini menyediakan pemetaan fleksibel untuk respons JSON dinamik, membolehkan anda menangkap data tanpa perlu mentakrifkan semua kunci yang mungkin.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Respons JSON Dinamik dengan Kekunci Tidak Dapat Diramalkan dengan Cekap 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