我正在开始从Python迁移到GoLang并且我试图了解数据类型。我需要将地图编组到以下JSON,但我不太确定应该如何构建我的地图。
这是我尝试过的,但它不适合我。
data := map[string]string{"Offset": "0", "Properties": map[string]string{"key": "Type", "value": "User"}, "Category": "all", "Locations": map[string]string{}, "Accounts": "100" }
data_json, _ := json.Marshal(data)
fmt.Println(string(data_json))
所需结果:
{
"Locations": [],
"Dates": [],
"Properties": [
{
"key": "Type",
"value": "User"
}
],
"Category": "all",
"Accounts": [],
"Offset": 0,
"Limit": 100
}
答案 0 :(得分:4)
问题在于您声称要将字符串映射写入字符串(键是字符串AND值是字符串)。但是您有键/值对:"Properties": map[string]string{"key": "Type", "value": "User"}
,并且该值不是字符串,而是另一个映射。如果将数据定义为接口的字符串映射,它应该可以工作。这看起来更像是这样:
data := map[string]interface{}{"Offset": "0", "Properties": map[string]string{"key": "Type", "value": "User"}, "Category": "all", "Locations": map[string]string{}, "Accounts": "100" }
这是一个工作示例: http://play.golang.org/p/HjHH463J_r
如果您不确定接口是什么以及它们工作的原因,那么文档很好地解释了它。