Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Menghuraikan Tatasusunan Peta JSON ke dalam Go Structs?

Bagaimanakah Saya Menghuraikan Tatasusunan Peta JSON ke dalam Go Structs?

Barbara Streisand
Barbara Streisandasal
2024-12-14 00:10:09952semak imbas

How Do I Parse JSON Arrays of Maps into Go Structs?

Menghuraikan Tatasusunan JSON ke dalam Struktur Data Go

Apabila berurusan dengan data JSON yang mengandungi tatasusunan, mungkin sukar untuk memilih struktur data Go yang sesuai untuk menghuraikan. Sebagai contoh, jika fail menyimpan tatasusunan pasangan nilai kunci, percubaan untuk menggunakan rentetan[rentetan]peta mungkin mengakibatkan ralat seperti "tidak boleh menyahmarshal tatasusunan ke dalam nilai Go jenis main.data."

Penyelesaiannya terletak pada mengenal pasti struktur JSON dengan tepat. Walaupun contoh yang diberikan kelihatan seperti tatasusunan, ia sebenarnya adalah tatasusunan peta. Fail itu sebaliknya harus menyerupai yang berikut untuk memadankan struktur rentetan[rentetan] peta:

{
  "a":"1",
  "b":"2",
  "c":"3"
}

Pertimbangkan coretan kod berikut yang menunjukkan menghuraikan tatasusunan peta ke dalam struct Go:

package main

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

type mytype []map[string]string

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)
}

Apabila anda menjalankan kod ini dengan fail JSON yang sah, ia akan berjaya menghuraikan data ke dalam struktur yang dikehendaki, memberikan anda akses kepada pasangan nilai kunci dalam tatasusunan.

Atas ialah kandungan terperinci Bagaimanakah Saya Menghuraikan Tatasusunan Peta JSON ke dalam Go Structs?. 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