去JSON地图新手

时间:2016-11-21 01:45:29

标签: json dictionary go

我如何让这个小程序工作?我正在尝试从json字符串中读取一堆cookie到地图中并打印地图。以下程序不打印任何内容。

type htmlDoc struct {
    cookies map[string] string `json:"Cookies"`
}

func main() {
    jsonString := `{    Cookies: {
        ["name1": "Value1"],
        ["name2": "Value2"],
        ["name3": "Value3"]
    }}`

    var doc htmlDoc
    json.Unmarshal([]byte(jsonString), &doc)

    for name, value := range doc.cookies {
        fmt.Printf("%s\t%s\n", name, value)
    }
}

2 个答案:

答案 0 :(得分:1)

您的代码中存在一些错误,首先您的json无效,我相信预期的JSON是:

{"Cookies": [
    {"name1": "Value1"},
    {"name2": "Value2"},
    {"name3": "Value3"}]
}

另外,正如md2perpe评论的那样,您必须从htmlDoc导出Cookie。另一个问题是,如果Cookies是一组地图,htmlDoc必须具有以下结构

type htmlDoc struct {
    Cookies []map[string]string `json:"Cookies"`
}

主要功能

func main() {
    jsonString := `{"Cookies": [
        {"name1": "Value1"},
        {"name2": "Value2"},
        {"name3": "Value3"}]}`

    var doc htmlDoc
    json.Unmarshal([]byte(jsonString), &doc)

    for _, value := range doc.Cookies {
        for k, v := range value {
            fmt.Printf("%s\t%s\n", k, v)
        }
    }
}

答案 1 :(得分:0)

需要导出字段cookies,即大写:

type htmlDoc struct {
    Cookies map[string] string `json:"Cookies"`
}