Dalam bidang penghuraian JSON, kadangkala seseorang menghadapi cabaran kekunci dinamik pada peringkat atas rentetan JSON. Katakan kita mempunyai JSON berikut:
j := `{"bvu62fu6dq": { "name": "john", "age": 23, "xyz": "weu33s" ..... .....} }`
Tugasnya ialah untuk mengekstrak nilai untuk "nama" dan "umur" daripada JSON ini, tetapi kunci "bvu62fu6dq" adalah dinamik dan berbeza dari kes ke kes.
Satu pendekatan ialah mentakrifkan struct yang memuatkan kunci dinamik ini struktur:
type Info struct { UniqueID map[string]string }
Walau bagaimanapun, struktur ini menghadapi cabaran dalam mengendalikan pengekstrakan sebenar "nama" dan "umur."
Untuk menghuraikan struktur JSON dinamik sedemikian dengan berkesan, kami boleh memanfaatkan kuasa daripada pakej "pengekodan/json" di Golang. Berikut ialah penyelesaiannya:
type Person struct { Name string `json:"name"` Age int `json:"age"` } type Info map[string]Person
Persediaan ini menggunakan pendekatan yang lebih fleksibel dengan menggunakan peta yang dikunci oleh kekunci peringkat atasan dinamik (cth., "bvu62fu6dq"). Struktur "Orang" merangkum data yang kami cari untuk ekstrak daripada setiap sub-objek dinamik (cth., "nama" dan "umur").
Dengan persediaan ini, menyahkod JSON dan mengekstrak nilai tertentu menjadi mudah :
var info Info err := json.Unmarshal([]byte(j), &info) if err != nil { // Handle error } fmt.Printf("%s: %d\n", info["bvu62fu6dq"].Name, info["bvu62fu6dq"].Age)
Penyelesaian komprehensif ini bukan sahaja mengendalikan kekunci JSON peringkat atas yang dinamik tetapi juga menyokong pengekstrakan medan tertentu (cth., "nama" dan "umur") daripada setiap sub-objek.
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Kekunci JSON Dinamik dan Mengekstrak Medan Khusus dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!