在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中文網其他相關文章!