Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Unmarshal Nested JSON ke dalam Array Objek dalam Go?

Bagaimana untuk Unmarshal Nested JSON ke dalam Array Objek dalam Go?

Barbara Streisand
Lepaskan: 2024-11-25 10:59:14
asal
366 orang telah melayarinya

How to Unmarshal Nested JSON into an Array of Objects in Go?

Menyahmarshall Nested JSON ke dalam Tatasusunan Objek dalam Go

Masalah

Pertimbangkan data JSON berikut:

{
   "1001":{
      "level":10,
      "monster-id":1001,
      "skill-level":1,
      "aimer-id":301
   },
   "1002":{
      "level":12,
      "monster-id":1002,
      "skill-level":1,
      "aimer-id":302
   },
   "1003":{
      "level":16,
      "monster-id":1003,
      "skill-level":2,
      "aimer-id":303
   }
}
Salin selepas log masuk

The matlamatnya adalah untuk menyahmarshal JSON ini menjadi pelbagai Monster objek.

type Monster struct {
    MonsterId  int32
    Level      int32
    SkillLevel int32
    AimerId    int32
}
Salin selepas log masuk

Penyelesaian

Untuk mencapainya, ikuti langkah berikut:

  1. Tentukan MonsterCollection: Buat jenis MonsterCollection untuk dipegang peta objek Raksasa dengan rentetan kunci.
type MonsterCollection struct {
    Pool map[string]Monster
}
Salin selepas log masuk
  1. Laksanakan Kaedah FromJson: Tentukan kaedah FromJson pada jenis MonsterCollection untuk mengendalikan unmarshaling.
func (mc *MonsterCollection) FromJson(jsonStr string) error {
    var data *map[string]Monster
    b := []byte(jsonStr)
    return json.Unmarshal(b, &data)
}
Salin selepas log masuk
  • Menggunakan data var *map[string]Monster mengelakkan penggunaan antara muka{}, memastikan bahawa peta yang dihasilkan mempunyai jenis yang diingini.
  • Mengirim data sebagai penunjuk memastikan bahawa perubahan yang dibuat semasa unmarshaling dicerminkan dalam medan Pool MonsterCollection.
  1. Jenis Kunci yang Betul dalam Kolam: Tukar jenis kunci peta Kolam kepada rentetan untuk memadankan kekunci dalam JSON data.
  2. Gunakan Struct Tag: Tambah tag struct JSON pada struct Monster untuk menentukan nama medan dalam data JSON.
type Monster struct {
    MonsterId  int32 `json:"monster-id"`
    Level      int32 `json:"level"`
    SkillLevel int32 `json:"skill-level"`
    AimerId    int32 `json:"aimer-id"`
}
Salin selepas log masuk
  1. Panggil FromJson: Panggil kaedah FromJson dengan rentetan JSON untuk menyahmarshal data ke dalam the MonsterCollection.
mc := new(MonsterCollection)
err := mc.FromJson(jsonStr)
Salin selepas log masuk
  1. Semak Ralat: Kendalikan sebarang ralat yang dikembalikan oleh FromJson untuk tujuan penyahpepijatan.
  2. Akses Objek : Gunakan medan Pool MonsterCollection untuk mengakses Monster individu objek.
for id, monster := range mc.Pool {
    fmt.Println(id, monster)
}
Salin selepas log masuk

Dengan mengikut langkah ini, anda boleh berjaya menyahmarshal data JSON bersarang ke dalam tatasusunan objek Monster dalam Go.

Atas ialah kandungan terperinci Bagaimana untuk Unmarshal Nested JSON ke dalam Array Objek dalam 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