Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah anda membongkar kunci JSON dinamik dengan struktur Viper dan Go?

Bagaimanakah anda membongkar kunci JSON dinamik dengan struktur Viper dan Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-20 11:33:02532semak imbas

How do you unmarshal dynamic JSON keys with Viper and Go structs?

Menghapus Kekunci JSON Dinamik dengan struktur Viper dan Go

Dalam Go, mengendalikan data JSON dengan kekunci dinamik boleh menjadi mencabar. Sebagai contoh, jika anda mempunyai fail konfigurasi JSON dengan objek yang mengandungi kekunci yang berbeza dalam nama, bagaimanakah anda menyahmarshal data ini ke dalam struktur Go?

Mari kita ambil fail konfigurasi JSON berikut sebagai contoh:

{
  "things" :{
    "123abc" :{
      "key1": "anything",
      "key2" : "more"
    },
    "456xyz" :{
      "key1": "anything2",
      "key2" : "more2"
    },
    "blah" :{
      "key1": "anything3",
      "key2" : "more3"
    }
  }
}

Untuk menangani perkara ini, anda boleh menggunakan peta untuk mewakili kekunci dinamik, seperti yang ditunjukkan dalam Go yang dikemas kini ini struct:

type X struct {
    Things map[string]Thing
}

type Thing struct {
    Key1 string
    Key2 string
}

Setelah anda mentakrifkan struct, anda boleh menyahmarshal data JSON seperti ini:

var x X
if err := json.Unmarshal(data, &x); err != nil {
    // handle error
}

Jika nama kekunci objek mestilah medan " Thing", anda boleh menambah gelung untuk menetapkannya selepas menyahmarshaling:

// Fix the name field after unmarshal
for k, t := range x.Things {
    t.Name = k
    x.Things[k] = t
}

Sebagai alternatif, JSON tersuai penyahkod boleh digunakan untuk mengendalikan kekunci dinamik dengan mengatasi kaedah "Nyahkod". Rujuk dokumentasi rasmi Go untuk mendapatkan butiran lanjut tentang pendekatan ini.

Dengan teknik ini, anda boleh menyahmarshal kekunci JSON dinamik secara berkesan ke dalam struct Go, membolehkan anda bekerja dengan fail konfigurasi kompleks dan struktur data.

Atas ialah kandungan terperinci Bagaimanakah anda membongkar kunci JSON dinamik dengan struktur Viper dan 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