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