Nyahmarshalling Kekunci Dinamik ke dalam Struct Fields in Go
Apabila bekerja dengan data JSON yang tidak mematuhi struktur yang telah ditetapkan, unmarshalling menjadi lebih mencabar. Dalam kes ini, anda mempunyai fail konfigurasi JSON dengan kekunci dinamik dalam objek bernama "benda".
Untuk menangani perkara ini, satu penyelesaian ialah menggunakan peta dalam struct anda untuk menangkap kekunci dinamik. Berikut ialah contoh:
type X struct { Things map[string]Thing } type Thing struct { Key1 string Key2 string }
Daripada mentakrifkan medan struktur khusus untuk setiap kekunci, medan "Perkara" ialah peta yang menyimpan pasangan nilai kunci, dengan kuncinya ialah kunci dinamik.
Untuk menyahmarshal data JSON menggunakan pendekatan ini, anda akan melakukan sesuatu seperti:
var x X if err := json.Unmarshal(data, &x); err != nil { // handle error }
Ini akan nyahmarshal JSON ke dalam struct "X", dengan kekunci dinamik dipetakan kepada contoh struct yang sesuai dalam peta "Things".
Walau bagaimanapun, jika anda masih mahu mempunyai nilai kunci sebagai medan dalam struct dan bukannya sebahagian daripada kunci peta, anda boleh menggunakan pendekatan ini:
type Thing struct { Name string `json:"-"` // <-- add this field Key1 string Key2 string } ... // Update the name field after unmarshalling for k, t := range x.Things { t.Name = k x.Things[k] = t }
Ini melibatkan penambahan teg "-`json" pada Medan "Nama" untuk mengabaikannya semasa unmarshalling. Selepas menyahmarshalling, gelung digunakan untuk menetapkan kekunci dinamik pada medan "Nama" bagi setiap tika struct dalam peta.
Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal JSON dengan Kekunci Dinamik ke dalam Struct Fields dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!