如何在golang中创建多级地图

How to create multilevel map in golang

我必须将 json 格式的请求参数发送到 API。此 json 请求参数采用嵌套格式,因此我尝试创建一个请求参数映射,然后将其转换为 json 格式并将其传递给 api.

这是预期的json格式

{
  "campaign_id": "test_notify",
  "content": {
    "template_id": "xxxxxxxx"
  },
  "recipients": [
    {
      "address": {"email":"xxxx@xxxxx.com"},
      "substitution_data": {
        "address1": "xxxx@xxxxx.com",
        "address1": "xxxx@xxxxx.com"
      }
    }
  ]
  }

我可以转换内容,但在 []

中包含收件人时遇到问题
parameter := make(map[string]interface{})
parameter["campaign_id"] = "test_notify"
parameter["content"] = map[string]string{"template_id": "xxxxxxxx"}

data := make(map[string]interface{})

data["address"] = "xxxx@xxxxx.com"
data["substitution_data"] = map[string]string{
  "address1":"xxxx@xxxxx.com",
  "address2": "xxxx@xxxxx.com"
}

parameter["recipients"] = data
fmt.Println(data)
fmt.Println(parameter)

mapC, _ := json.Marshal(parameter)
fmt.Println(string(mapC))

我正在获取输出

{"campaign_id":"test_notify","content":{"template_id":"xxxxxxxx"},"recipients":{"address":"xxxx@xxxxx.com","substitution_data":{"address1":"xxxx@xxxxx.com","address2":"xxxx@xxxxx.com"}}}

我只需要在 [] 中包含收件人数据,我的预期请求参数就会匹配。

要将收件人包含在 JSON 数组中,请创建一个 Go 切片并附加您存储在 data 中的内容。然后将切片分配给 parameter["recipients"] 而不是 data.

您可以将代码更改为如下内容:

recipients := make([]map[string]interface{}, 0)
recipients = append(recipients, data)
parameter["recipients"] = recipients