Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya Boleh Menyahkod JSON dengan Struktur Pembolehubah dalam Go?

Bagaimanakah saya Boleh Menyahkod JSON dengan Struktur Pembolehubah dalam Go?

Patricia Arquette
Patricia Arquetteasal
2025-01-01 01:58:11673semak imbas

How Can I Decode JSON with a Variable Structure in Go?

Menyahkod JSON dengan Struktur Pembolehubah

Apabila bekerja dengan data JSON, mungkin sukar untuk menangani struktur data yang berbeza-beza. Dalam kes sedemikian, kaedah konvensional seperti json.Unmarshal() menggunakan struct tetap menjadi tidak praktikal. Berikut ialah penyelesaian untuk senario ini:

Penyelesaian:Unmarshal ke dalam map[string]interface{}

Daripada bergantung pada struct yang telah ditetapkan, kita boleh unmarshal JSON ke dalam jenis peta [rentetan]antara muka{} generik. Ini membolehkan kami mengendalikan data JSON dengan struktur yang berbeza-beza.

Pertimbangkan JSON berikut:

{ "votes": { "option_A": "3" } }

Untuk menambah kunci "kira" pada JSON ini, kami boleh menyahmarshalkannya seperti berikut:

package main

import (
    "encoding/json"
)

func main() {
    in := []byte(`{ "votes": { "option_A": "3" } }`)
    var raw map[string]interface{}
    if err := json.Unmarshal(in, &raw); err != nil {
        panic(err)
    }
    raw["count"] = 1
    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }
    println(string(out))
}

Pendekatan ini membolehkan kami mengubah suai struktur JSON dengan mudah tanpa terikat kepada model data tetap. Jenis peta[rentetan]antara muka{} memberikan fleksibiliti dalam mengendalikan struktur JSON dinamik.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Menyahkod JSON dengan Struktur Pembolehubah 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
Artikel sebelumnya:Go Generics: A Deep DiveArtikel seterusnya:Go Generics: A Deep Dive