登录
首页 >  Golang >  Go问答

打印golang中JSON所有字段的方法

来源:stackoverflow

时间:2024-03-22 18:00:31 393浏览 收藏

在 Go 语言中,打印 JSON 所有字段的方法通常涉及修改类型结构或使用标签。本文介绍了两种解决方案: * 将水果数据放入一个包含篮子字段的结构体中,并使用 JSON 标签指定字段名称。 * 修改现有篮子类型,使其与 JSON 输出结构匹配,并直接使用该类型进行 JSON 序列化。

问题内容

我仍在学习 go(来自 python),并且正在尝试在 aws 中自动执行任务。我在工作中有这样的要求,我需要将 json 输出写入文件,但我正在努力如何打印结构中的所有字段。我缺少 basket 字段。

我希望它像这样打印:

{
  "basket": [
    {
      "name": "apple",
      "color": "red"
    },
    {
      "name": "banana",
      "color": "yellow"
    }
  ]
}

但我只得到这个:

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

您可以在 go 演示中找到我的代码。


解决方案


把水果放在篮子里。

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

今天关于《打印golang中JSON所有字段的方法》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>