Arrays GO中的嵌套JSON数组生成
我正在尝试根据定义的结构生成JSON负载。我已经找到了各种单数组对象的示例,但找不到一个适合多数组的 示例代码(不起作用): 预期产出:Arrays GO中的嵌套JSON数组生成,arrays,json,go,discord,Arrays,Json,Go,Discord,我正在尝试根据定义的结构生成JSON负载。我已经找到了各种单数组对象的示例,但找不到一个适合多数组的 示例代码(不起作用): 预期产出: { "embeds": [{ "title": "title1", "description": "description1", "url": "url1", "color": 6545520 }] } 最好的方法是什么?最后,我将用变量替换这些值,并考虑更多容器的可能性,例如完整的discord webhook()如何
{
"embeds": [{
"title": "title1",
"description": "description1",
"url": "url1",
"color": 6545520
}]
}
最好的方法是什么?最后,我将用变量替换这些值,并考虑更多容器的可能性,例如完整的discord webhook()如何初始化匿名结构的切片:
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}}}
如何初始化匿名结构的切片:
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}}}
您需要正确初始化值:。我建议您单独声明嵌入结构类型并将其用作切片字段的元素类型,而不是使用匿名结构的切片。@mkopriva我知道我可以使用复合文字创建数组,但当我这样做时,我似乎无法在json中附加值对。为了能够使用Go生成所需的json,您首先需要有效的Go代码,可以编译的代码,但您在问题中共享的代码不会编译,所以请首先按照第一条注释中的建议进行操作,然后,在它编译后,您的json仍然不是您想要的,您可以使用编译的代码更新问题,我们将能够进一步提供帮助。。。。如果第一条评论中的建议不明确,请特别告诉我。@mkopriva抱歉,我应该指定,代码已被破坏,因为我将
embeddes struct
更改为embeddes[]struct
,试图在数组中包含数组。可以编译,但当我更改它时,我不确定从何处开始。您需要正确初始化值:。我建议您单独声明嵌入结构类型并将其用作切片字段的元素类型,而不是使用匿名结构的切片。@mkopriva我知道我可以使用复合文字创建数组,但当我这样做时,我似乎无法在json中附加值对。为了能够使用Go生成所需的json,您首先需要有效的Go代码,可以编译的代码,但您在问题中共享的代码不会编译,所以请首先按照第一条注释中的建议进行操作,然后,在它编译后,您的json仍然不是您想要的,您可以使用编译的代码更新问题,我们将能够进一步提供帮助。。。。如果第一条评论中的建议不明确,请特别告诉我。@mkopriva抱歉,我应该指定,代码已被破坏,因为我将embeddes struct
更改为embeddes[]struct
,试图在数组中包含数组。这是可以编译的,但是当我修改它的时候,我不知道从那里去哪里。谢谢,这更有意义。谢谢,这更有意义。