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

Bagaimana untuk Unmarshal JSON menjadi Array Objek dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-27 08:19:09186semak imbas

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

Menyahmarshall JSON kepada Tatasusunan Objek dalam Go

Menghuraikan data JSON ke dalam struktur Go tersuai adalah penting untuk banyak tugas pengaturcaraan. Soalan ini meneroka cara menghuraikan JSON ke dalam tatasusunan objek dalam Go.

Masalahnya

Data JSON yang disediakan dalam soalan mempamerkan format tertentu, di mana setiap kunci mewakili pengecam unik, dan nilai yang sepadan ialah objek bersarang yang mengandungi beberapa atribut. Matlamatnya adalah untuk menyahmarshal data JSON ini ke dalam tatasusunan struct, di mana setiap elemen dalam tatasusunan mewakili salah satu objek bersarang dalam JSON.

Coretan kod yang disediakan dalam soalan cuba menghuraikan JSON ke dalam Struktur MonsterCollection, yang mengandungi peta rentetan kepada struct Monster. Walau bagaimanapun, pengkompil melaporkan ralat operasi yang tidak sah kerana jenis tidak sepadan.

Penyelesaian

Isu utama dengan coretan kod ialah ia menyahmarshal JSON ke dalam antara muka jenis {}, yang membenarkan penaipan dinamik tetapi mempunyai kefungsian terhad. Untuk mengakses medan khusus dalam objek bersarang, pembolehubah v dalam gelung perlu ditegaskan jenis kepada jenis yang betul.

Selain itu, kod cuba memasukkan objek Monster ke dalam peta dengan kekunci integer. Walau bagaimanapun, peta Pool ialah peta rentetan kepada struct Monster, jadi kekuncinya mestilah rentetan.

Kod berikut menunjukkan cara untuk menyahmarshal JSON dengan betul ke dalam tatasusunan struct Monster:

type Monster struct {
    MonsterId  int32 `json:"monster-id"`
    Level      int32 `json:"level"`
    SkillLevel int32 `json:"skill-level"`
    AimerId    int32 `json:"aimer-id"`
}

type MonsterCollection struct {
    Pool map[string]Monster
}

func (mc *MonsterCollection) FromJson(jsonStr string) error {
    var data map[string]Monster
    b := []byte(jsonStr)
    err := json.Unmarshal(b, &data)
    if err != nil {
        return err
    }

    mc.Pool = data
    return nil
}

Dalam kod ini:

  • Struktur Monster menggunakan tag json untuk memetakan nama medan kepada yang sepadan Kekunci JSON.
  • Struktur MonsterCollection mengandungi peta rentetan kepada struct Monster, menggunakan pengecam unik sebagai kunci.
  • Kaedah FromJson MonsterCollection mengambil rentetan JSON sebagai hujah, membongkarnya menjadi peta data, menyerahkan peta kepada medan Pool dan mengembalikan sebarang ralat dihadapi.

Kini, data JSON boleh dibongkar ke dalam struktur MonsterCollection dan diakses melalui peta Pool, yang menyediakan cara mudah untuk mendapatkan semula raksasa individu menggunakan pengecam unik mereka.

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