GO 中的嵌套 JSON 数组生成

我正在尝试基于定义的结构生成 JSON 有效负载。我找到了单个数组对象的各种示例,但找不到适合多数组的示例。


示例代码(不起作用):


package main


import "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/ )


哔哔one
浏览 115回答 1
1回答

慕神8447489

如何初始化一片匿名结构: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}}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go