猿问

如何让golang打印出JSON中的所有字段?

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


我希望它像这样打印:


{

  "Basket": [

    {

      "Name": "Apple",

      "Color": "Red"

    },

    {

      "Name": "Banana",

      "Color": "Yellow"

    }

  ]

}

但我只得到这个:


[

  {

    "Name": "Apple",

    "Color": "Red"

  },

  {

    "Name": "Banana",

    "Color": "Yellow"

  }

]

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


慕妹3146593
浏览 137回答 2
2回答

明月笑刀无情

把水果放在篮子里。预期输出和实际输出之间的区别在于数组在预期输出中用对象包装。修改相应的 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}, "", "  ")

杨魅力

在您的 printJSON 函数中,您只是打印出篮子里的水果幻灯片。创建和打印篮子结构并向字段篮子添加 JSON 标记可实现您想要的:https://play.golang.org/p/aJcbP97CDGttype 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))}
随时随地看视频慕课网APP

相关分类

Go
我要回答