json - Golang 将 JSON 数组解析成数据结构

我正在尝试解析一个包含 JSON 数据的文件:

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

由于这是一个带有动态键的 JSON 数组,我想我可以使用:

type data map[string]string

但是,我无法使用 map 解析文件:

c, _ := ioutil.ReadFile("c")
dec := json.NewDecoder(bytes.NewReader(c))
var d data
dec.Decode(&d)


json: cannot unmarshal array into Go value of type main.data

将包含 JSON 数据的文件解析为 Go 结构的最简单方法是数组(仅字符串到字符串类型)?

编辑:为了进一步详细说明已接受的答案——我的 JSON 确实是一组 map 。为了使我的代码正常工作,该文件应包含:

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

然后就可以读入一个map[string]string

最佳答案

试试这个:http://play.golang.org/p/8nkpAbRzAD

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

https://stackoverflow.com/questions/25465566/

相关文章:

c# - 如何使用 Newtonsoft.Json 包在 C#(4.0) 中解析我的 json 字符

json - 在jq中将字符串转换为json

javascript - 如何使用 Javascript 将数据写入 JSON 文件

json - 自定义 MarshalJSON() 永远不会在 Go 中被调用

ios - 如何在 Swift 中解析 JSON 中的数组?

java - Gson - 自动引号(“)转义?

javascript - 在 JavaScript 中将 JSON 对象转换为 CSV 格式

javascript - 在 HTML 数据属性上添加 JSON 是不是很糟糕?

php - 通过 JSON 发送 HTML 代码

javascript - 在javascript中将json对象写入文本文件