【问题标题】:Go JSON map newbieGo JSON 地图新手
【发布时间】:2016-11-21 01:45:29
【问题描述】:

如何让这个小程序运行?我正在尝试将一堆 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)
    }
}

【问题讨论】:

  • 检查来自 Unmarshal 的错误,这不是有效的 JSON。

标签: json dictionary go


【解决方案1】:

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

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

另外,正如 md2perpe 所说,您必须从 htmlDoc 导出 Cookie。另一件事,如果Cookies是一个map数组,那么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)
        }
    }
}

【讨论】:

  • 正是我想要的。我对 json 和 Go 还很陌生。这真的很有帮助!谢谢!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-19
    • 2017-07-31
    • 2023-03-10
    • 2018-04-07
    • 1970-01-01
    • 2015-03-24
    • 2019-12-13
    • 2021-07-11
    相关资源
    最近更新 更多