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
Lepaskan: 2024-11-20 11:33:02
asal
529 orang telah melayarinya

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"
    }
  }
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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

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

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan