在struct mapping中存储/解码json的最佳方法

时间:2016-12-12 02:28:14

标签: json go maps decode

我在结构中有一个映射,如下所示:

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)

但是我遇到地图问题

1 个答案:

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