马歇尔MAP到JSON

时间:2014-12-17 20:05:36

标签: json go

我正在开始从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
}

1 个答案:

答案 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

如果您不确定接口是什么以及它们工作的原因,那么文档很好地解释了它。