我仍在学习Go(来自Python),并且正在尝试在AWS中自动执行任务。我在工作时有这个要求,我需要将JSON输出写入文件,但是我正在努力如何打印结构中的所有字段。我缺少Basket
字段。
我希望这样打印:
{
"Basket": [
{
"Name": "Apple",
"Color": "Red"
},
{
"Name": "Banana",
"Color": "Yellow"
}
]
}
但是我只会得到这个:
[
{
"Name": "Apple",
"Color": "Red"
},
{
"Name": "Banana",
"Color": "Yellow"
}
]
您可以在Go Playground中找到我的代码。
答案 0 :(得分:3)
把水果放在篮子里。
预期输出与实际输出之间的区别在于,数组在预期输出中包装了一个对象。修改相应的Go类型以匹配预期输出的结构。
var data = struct{ Basket []Fruit }{Basket: fruits}
dat, err := json.MarshalIndent(&data, "", " ")
https://play.golang.org/p/7g9HDZ38XxU
或者,更改现有的Basket
类型以匹配JSON并使用它:
type Basket struct {
Basket []Fruit
}
...
dat, err := json.MarshalIndent(&Basket{Basket:fruit}, "", " ")
答案 1 :(得分:1)
在您的printJSON函数中,您只是打印出水果篮的幻灯片。创建和打印篮子结构并向字段Basket添加JSON标签即可实现您想要的:
https://play.golang.org/p/aJcbP97CDGt
type Basket struct {
Fruits []Fruit `json:"Basket"`
}
// Prints the output in JSON format.
func printJSON() {
dat, err := json.MarshalIndent(Basket{fruits}, "", " ")
if err != nil {
fmt.Println(err)
}
fmt.Println("This is printJSON().")
fmt.Println(string(dat))
}