如何在golang中为Json数组赋予标识符

时间:2016-10-11 12:15:29

标签: arrays json go struct

我正在尝试使用json.Marshall在结构中使用结构创建一个JSON数组但是我似乎无法在这里获得所需的结果是我正在使用的结构片段。

posts := []models.Post{
    models.Post{Id: 1,MediaUrl:"...", Title: "...", Slug: "...", ShortDescription : "...", Content : "..."},
    models.Post{Id: 2,MediaUrl:"...", Title: "...", Slug: "...", ShortDescription : "...", Content : "..."},
}

我正在尝试将其编组成一个看起来像

的结构
{"posts":[{"Id": 1,...},{"Id": 2,...}]}

但我被困在

[{"Id":1,...},{"Id": 2,...}]

我不知道如何在json数组周围获得额外的{"posts":..}。 如何将此附加标识符添加到json数组? 感谢

1 个答案:

答案 0 :(得分:3)

用结构包裹切片以使用“posts”字段添加JSON对象:

data := struct { 
   Posts []models.Post `json:"posts"`
}{
   Posts: posts
}
p, err := json.Marshal(&data)

另一种方法是用地图包裹切片:

p, err := json.Marshal(map[string]interface{}{"posts": posts})