我仍在学习Go(来自Python),并且正在尝试在AWS中自动执行任务。我有这项工作要求,我需要将JSON输出写入文件,但是我正在努力如何打印结构中的所有字段。我缺少Basket字段。

我希望这样打印:

{
  "Basket": [
    {
      "Name": "Apple",
      "Color": "Red"
    },
    {
      "Name": "Banana",
      "Color": "Yellow"
    }
  ]
}

但是我只得到这个:
[
  {
    "Name": "Apple",
    "Color": "Red"
  },
  {
    "Name": "Banana",
    "Color": "Yellow"
  }
]

您可以在Go Playground中找到我的代码。

最佳答案

将水果放在篮子里。

预期输出和实际输出之间的差异在于,数组在预期输出中包装了一个对象。修改相应的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}, "", "  ")

10-04 20:17