Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays GO中的嵌套JSON数组生成_Arrays_Json_Go_Discord - Fatal编程技术网

Arrays GO中的嵌套JSON数组生成

Arrays GO中的嵌套JSON数组生成,arrays,json,go,discord,Arrays,Json,Go,Discord,我正在尝试根据定义的结构生成JSON负载。我已经找到了各种单数组对象的示例,但找不到一个适合多数组的 示例代码(不起作用): 预期产出: { "embeds": [{ "title": "title1", "description": "description1", "url": "url1", "color": 6545520 }] } 最好的方法是什么?最后,我将用变量替换这些值,并考虑更多容器的可能性,例如完整的discord webhook()如何

我正在尝试根据定义的结构生成JSON负载。我已经找到了各种单数组对象的示例,但找不到一个适合多数组的

示例代码(不起作用):

预期产出:

{
 "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
,试图在数组中包含数组。这是可以编译的,但是当我修改它的时候,我不知道从那里去哪里。谢谢,这更有意义。谢谢,这更有意义。