首頁 > 後端開發 > Golang > 如何在 Go 中解析動態鍵值對的 JSON 陣列?

如何在 Go 中解析動態鍵值對的 JSON 陣列?

Mary-Kate Olsen
發布: 2024-12-16 20:36:12
原創
839 人瀏覽過

How to Parse a JSON Array of Dynamic Key-Value Pairs in Go?

在Go 中將JSON 陣列解析為資料結構

在Go 中處理JSON 資料時,了解適當的資料結構至關重要對於不同的JSON 格式。在本例中,我們正在處理動態鍵值對的 JSON 陣列。

問題:

您正在嘗試解析包含以下數組的 JSON 檔案: JSON 物件。然而,使用簡單的map[string]string來表示資料會導致錯誤:

[
  {"a" : "1"},
  {"b" : "2"},
  {"c" : "3"}
]
登入後複製
登入後複製
type data map[string]string

c, _ := ioutil.ReadFile("c")
dec := json.NewDecoder(bytes.NewReader(c))
var d data
dec.Decode(&d) // Error: cannot unmarshal array into Go value of type main.data
登入後複製

解:

正確解析JSON數組,您需要定義一個表示物件數組的資料結構。這可以使用嵌入地圖切片的自訂類型來實現。

type mytype []map[string]string
登入後複製

程式碼:

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)
}
登入後複製

範例:

對於提供的JSON檔:

[
  {"a" : "1"},
  {"b" : "2"},
  {"c" : "3"}
]
登入後複製
登入後複製

程式碼的輸出將會是:

[{map[a:1]} {map[b:2]} {map[c:3]}]
登入後複製

以上是如何在 Go 中解析動態鍵值對的 JSON 陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板