我在结构中有一个映射,如下所示:
type Red struct {
**other
Tel map[string]string `json:"Tel"`
}
我收到的数据json格式如下
{
"Params":[{"rewew": "tref"},{"Value": "x"},....]
}
我正在寻找用数据填充结构的最有效方法,以便
Tel["rewew"] = "tref"
Tel["Value"] = "x"
对于其余的值,当这些值更简单时,它可以正常工作:
var t Red
decode := json.NewDecoder(req.Body)
decode.Decode(&t)
但是我遇到地图问题
答案 0 :(得分:1)
如果你的JSON是
{
"Params":[{"rewew": "tref"},{"Value": "x"},....]
}
如果您想将Params
映射到Tel
,您的结构应为:
type Red struct {
**other
Tel []map[string]string `json:"Params"`
}
您可以添加以下新元素:
red.Tel = append(red.Tel, map[string]string{"rewew": "tref"})
red.Tel = append(red.Tel, map[string]string{"Value": "x"})
但是,如果您允许更改请求并且密钥不会重复,请使用JSON之类的
,我认为有更好的方法可以做到这一点{
"Params":{"rewew": "tref", "Value": "x"}
}
结构应该是:
type Red struct {
**other
Tel map[string]string `json:"Params"`
}
您可以使用以下数据:
red.Tel["rewew"] = "tref"
red.Tel["Value"] = "x"