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

GO 中的嵌套 JSON 数组生成

GO 中的嵌套 JSON 数组生成

Go
哔哔one 2022-06-01 16:14:14
我正在尝试基于定义的结构生成 JSON 有效负载。我找到了单个数组对象的各种示例,但找不到适合多数组的示例。示例代码(不起作用):package mainimport "encoding/json"import "fmt"type DiscMessage struct {    Embeds []struct {        Title       string `json:"title"`        Description string `json:"description"`        URL         string `json:"url"`        Color       int    `json:"color"`    } `json:"embeds"`}func main() {var values = DiscMessage{Embeds{{"title1", "description1", "url1", 6545520}}}encjson, _:= json.Marshal(values)fmt.Println(string(encjson))}预期输出:{ "embeds": [{    "title": "title1",    "description": "description1",    "url": "url1",    "color": 6545520  }]}最好的方法是什么?最终我将用变量替换值,以及更多容器的可能性,例如完整的不和谐 webhook ( https://leovoel.github.io/embed-visualizer/ )
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

如何初始化一片匿名结构:


type DiscMessage struct {

    Embeds []struct {

        Title       string `json:"title"`

        Description string `json:"description"`

        URL         string `json:"url"`

        Color       int    `json:"color"`

    } `json:"embeds"`

}


_ = DiscMessage{Embeds: []struct{

    Title       string `json:"title"`

    Description string `json:"description"`

    URL         string `json:"url"`

    Color       int    `json:"color"`

}{

    {"title1", "description1", "url1", 6545520},

}}

正如您所看到的,这对于任何理智的人来说都过于冗长,如果您必须在许多其他地方进行初始化,这将是一个真正的负担。


为了解决这个问题,您可以声明切片的元素类型,即给它一个名称,这样它就不再是匿名的了,并为您自己节省了一些不必要的输入。


type DiscMessageEmbed struct {

    Title       string `json:"title"`

    Description string `json:"description"`

    URL         string `json:"url"`

    Color       int    `json:"color"`

}


type DiscMessage struct {

    Embeds []DiscMessageEmbed `json:"embeds"`

}


_ = DiscMessage{Embeds: []DiscMessageEmbed{{"title1", "description1", "url1", 6545520}}}



查看完整回答
反对 回复 2022-06-01
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

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