Go中切片内的对象
我试图在一个切片中嵌入多个对象,以便以后可以将它们导出为JSON。JSON应该如下所示:Go中切片内的对象,go,slice,Go,Slice,我试图在一个切片中嵌入多个对象,以便以后可以将它们导出为JSON。JSON应该如下所示: [ { name: "Nginx" version: "1.9" }, { name: ircd-hybrid" version: "8.2" } ] 到目前为止,我在Go中有一个结构: type response struct { application []struct { name
[
{
name: "Nginx"
version: "1.9"
},
{
name: ircd-hybrid"
version: "8.2"
}
]
到目前为止,我在Go中有一个结构:
type response struct {
application []struct {
name string
version string
}
}
现在(我甚至不确定该结构是否正确),我尝试以这种方式访问它(同样,不确定是否正确):
等等等等。但是,它不起作用,所以我想我在某个地方出错了。我只是不知道在哪里。您的“模型”(本例中的Go结构)的形式不太正确。你真的只是想要这个
type application struct {
Name string `json:"name"` // gotta uppercase these so they're exported
Version string `json:"version"` // otherwise you can't marshal them
}
apps := []application{
application{Name:"Windows", Version:"10"}
}
app := application{Name:"Linux", Vesion:"14.2"}
apps = append(apps, app)
json以[
打开,这意味着它只是一个数组,没有封闭的对象。如果有,您可能需要另一种类型的应用程序数组([]application
)属性。若要向该数组添加项,您可以使用附加或使用“复合文字”语法使用某个实例对其进行初始化
编辑:我添加了一些注释,以便生成的json将具有与您示例中相同的小写名称。如果属性未在Go中导出,其他库(如encoding/json
)将无法使用该属性。但是,您可能的副本并不远,这里有一个简单的操场代码可以帮助您,感谢关于“大写”的提示,你刚刚解决了我的另一个问题:-)我如何访问切片/对象?应用程序[0]。Name给了我一个“索引超出范围”error@JacksGT这是关于用于初始化的append或composite literal的注释,我将用每个示例更新。
type application struct {
Name string `json:"name"` // gotta uppercase these so they're exported
Version string `json:"version"` // otherwise you can't marshal them
}
apps := []application{
application{Name:"Windows", Version:"10"}
}
app := application{Name:"Linux", Vesion:"14.2"}
apps = append(apps, app)