猿问

如何将 json 文件读入地图

我有一个这样的 json 文件 - data.json


{

    "data1" : {

        "tag" : "some_tag1",

        "info" : "some_info1",

    },

     "data2" : {

        "tag" : "some_tag2",

        "info" : "some_info2",

    }

}

我有一个像下面这样的结构


type someStruct struct {

    tag    string `json:"tag"`

    info   string `json:"info"`


}

我正在尝试将 json 文件读入下面的地图


errorJSON    map[string]someStruct

下面是我的代码


jsonParser := json.NewDecoder(data.json)

err := jsonParser.Decode(&errorJSON)

但我收到一个错误


json.UnmarshalTypeError

我究竟做错了什么


长风秋雁
浏览 137回答 3
3回答

慕沐林林

数据有问题。它不是有效的 JSON,因为它有尾随逗号。试试这个:{    "data1" : {        "tag" : "some_tag1",        "info" : "some_info1"    },     "data2" : {        "tag" : "some_tag2",        "info" : "some_info2"    }}

蓝山帝景

您必须大写someStruct字段和 json 必须有效格式。type someStruct struct {    Tag  string `json:"tag"`    Info string `json:"info"`}

慕哥6287543

您的示例 json 有多余的逗号 - 已删除数据结构是一对带键的 someStruct,所以需要是一个映射大写 json 结构字段这是一个基于您的代码的工作示例package mainimport (    "encoding/json"    "fmt")type someStruct struct {    Tag  string `json:"tag"`    Info string `json:"info"`}func main() {    buf := `{    "data1" : {        "tag" : "some_tag1",        "info" : "some_info1"    },     "data2" : {        "tag" : "some_tag2",        "info" : "some_info2"    }}`    dat := make(map[string]someStruct)    if err := json.Unmarshal([]byte(buf), &dat); err != nil {        panic(err)    }    fmt.Println("Hello, playground", dat)}操场https://play.golang.org/p/ZGuCcGI3vA6
随时随地看视频慕课网APP

相关分类

Go
我要回答