Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahmarshal JSON dengan Kekunci Dinamik ke dalam Struct Fields dalam Go?

Bagaimana untuk Menyahmarshal JSON dengan Kekunci Dinamik ke dalam Struct Fields dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-16 00:07:03598semak imbas

How to Unmarshal JSON with Dynamic Keys into Struct Fields in Go?

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!

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