我很难在我的编码(marshal) JSON 结构中添加一个外部标签。这是我的例子:
package main
import (
"encoding/json"
"fmt"
"log"
"time"
)
type tObj struct {
ModTime time.Time `json:"mTime"`
Name string `json:"mName"`
}
func main() {
var objs []tObj
objs = append(objs, getItem("first"))
objs = append(objs, getItem("second"))
json, err := json.MarshalIndent(objs, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(json))
}
func getItem(name string) tObj {
var t tObj
t.ModTime = time.Now()
t.Name = name
return t
}
到目前为止一切顺利,这给了我这样的东西:[{
"mTime": "2020-06-26T21:29:52.148663+02:00",
"mName": "first"
},
{
"mTime": "2020-06-26T21:29:52.148666+02:00",
"mName": "second"
}
]
我想要的只是向生成的 JSON 添加一个外部标签,如下所示:{
"objects": [{
"mTime": "2020-06-26T21:29:52.148663+02:00",
"mName": "first"
},
{
"mTime": "2020-06-26T21:29:52.148666+02:00",
"mName": "second"
}
]
}
我尝试将 json 注释直接添加到 struct 类型,但这不起作用。实现这一目标的最简单方法是什么?
最佳答案
您不再是编码一个数组,而是编码一个对象。您可以通过以下方式实现:
json, err := json.MarshalIndent(map[string]interface{}{"objects":objs}, "", " ")
关于json - 编码结构 slice 时向生成的 JSON 添加外部标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62601819/