我正在尝试使用json.Marshall在带有结构的Go中创建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数组?
谢谢

最佳答案

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

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

另一种方法是使用 map 包装 slice :
p, err := json.Marshal(map[string]interface{}{"posts": posts})

关于arrays - 如何在Golang中给Json数组一个标识符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39977034/

10-12 07:24