如何在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
我必须将 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