2016-11-21 45 views
-2

我该如何得到这个小程序的工作?我试图从JSON字符串中读取一堆cookie到地图中并打印地图。下面的程序什么都不打印。前往JSON地图新手

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

检查从解组的错误,这不是有效的JSON。 – JimB

回答

0

领域cookies需要导出,即是大写:

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

有在你的代码中的错误,首先您的JSON是无效的,我认为预期的JSON是:

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

此外,由于md2perpe评论,您必须从htmlDoc导出Cookies。另一个问题,如果Cookie是地图的数组,该HTMLDOC必须具有以下结构

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

和主FUNC

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

正是我在找什么。我对json和Go相当陌生。这真的有帮助!谢谢! – user2443447