Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menghuraikan Tatasusunan JSON dengan Kekunci Dinamik ke dalam Struktur Data Go?

Bagaimana untuk Menghuraikan Tatasusunan JSON dengan Kekunci Dinamik ke dalam Struktur Data Go?

Linda Hamilton
Lepaskan: 2024-12-07 07:07:19
asal
921 orang telah melayarinya

How to Parse JSON Arrays with Dynamic Keys into Go Data Structures?

Menghuraikan Tatasusunan JSON ke dalam Struktur Data Go

Di Golang, menghuraikan data JSON ke dalam struktur data tersuai boleh menjadi mudah. Pertimbangkan senario di mana fail JSON mengandungi tatasusunan objek dengan kekunci dinamik:

[
  {"a" : "1"},
  {"b" : "2"},
  {"c" : "3"}
]
Salin selepas log masuk

Percubaan menghuraikan JSON ini ke dalam rentetan[rentetan] peta boleh mengakibatkan ralat:

import (
    "encoding/json"
    "io/ioutil"
    "log"
)

type data map[string]string

func main() {
    c, _ := ioutil.ReadFile("test.json")
    dec := json.NewDecoder(bytes.NewReader(c))
    var d data
    dec.Decode(&d) // error: cannot unmarshal array into Go value of type data
}
Salin selepas log masuk

Untuk menyelesaikan isu ini dan menghuraikan tatasusunan JSON, jenis mytype tersuai ditakrifkan sebagai tatasusunan peta:

type mytype []map[string]string
Salin selepas log masuk

Dengan mentakrifkan struktur data sebagai sekeping peta, tatasusunan JSON boleh dihuraikan dengan sewajarnya:

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
)

func main() {
    var data mytype
    file, err := ioutil.ReadFile("test.json")
    if err != nil {
        log.Fatal(err)
    }
    err = json.Unmarshal(file, &data)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(data)
}
Salin selepas log masuk

Pendekatan ini membenarkan penghuraian tatasusunan JSON dengan kekunci dinamik ke dalam struktur data Go.

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Tatasusunan JSON dengan Kekunci Dinamik ke dalam Struktur Data 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