为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕妹3146593 2023-06-12 12:52:00
我仍在学习 Go(来自 Python)并且我正在尝试在 AWS 中自动执行任务。我在工作中有这个要求,我需要将 JSON 输出写入一个文件,但我正在努力如何打印我的结构中的所有字段。我错过了这个Basket领域。我希望它像这样打印:{  "Basket": [    {      "Name": "Apple",      "Color": "Red"    },    {      "Name": "Banana",      "Color": "Yellow"    }  ]}但我只得到这个:[  {    "Name": "Apple",    "Color": "Red"  },  {    "Name": "Banana",    "Color": "Yellow"  }]您可以在Go Playground中找到我的代码。
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

把水果放在篮子里。


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


查看完整回答
反对 回复 2023-06-12
?
杨魅力

TA贡献1811条经验 获得超5个赞

在您的 printJSON 函数中,您只是打印出篮子里的水果幻灯片。创建和打印篮子结构并向字段篮子添加 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))

}


查看完整回答
反对 回复 2023-06-12
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信