gpt4 book ai didi

arrays - GO中嵌套的JSON数组生成

转载 作者:行者123 更新时间:2023-12-01 22:06:31 25 4
gpt4 key购买 nike

我试图基于定义的结构生成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/)

最佳答案

如何初始化匿名结构的 slice :

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},
}}

如您所见,这对于任何理智的头脑来说都太冗长了,如果您必须在许多其他地方进行初始化,这将是一个很大的负担。

为了解决这个问题,您可以声明 slice 的元素类型,即为其指定一个名称,这样它就不再是匿名的了,并为自己节省了一些不必要的输入。
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}}}

关于arrays - GO中嵌套的JSON数组生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61586103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com