gpt4 book ai didi

arrays - 将带有嵌套数组和对象的 JSON 数据解码为 Go 结构

转载 作者:IT王子 更新时间:2023-10-29 02:27:40 25 4
gpt4 key购买 nike

我正在使用从 Youtube API 接收的数据将 Youtube json 响应解码到 Go 结构中,如下所示:-

{
"kind": "youtube#searchListResponse",
"etag": "\"5g01s4-wS2b4VpScndqCYc5Y-8k/5xHRkUxevhiDF1huCnKw2ybduyo\"",
"nextPageToken": "CBQQAA",
"regionCode": "TH",
"pageInfo": {
"totalResults": 36,
"resultsPerPage": 20
},
"items": [
{
"kind": "youtube#searchResult",
"etag": "\"5g01s4-wS2b4VpScndqCYc5Y-8k/aMbszoNudZchce3BIjZC_YemugE\"",
"id": {
"kind": "youtube#video",
"videoId": "fvh6CQ7FxZE"
},
"snippet": {
"publishedAt": "2016-07-16T14:42:36.000Z",
"channelId": "UCuX4iswo8acMxDNcbrceRYQ",
"title": "Japan อร่อยสุดๆ:การประชันของ 2 สาวกับราเมงดังจากโอซาก้า#ramen",
"description": "Ramen Kio ราเมนชื่อดังของโอซาก้าอัดแน่นด้วยเนื้อหมูชาชูแบบเต็มๆเส้นเหนีย...",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/fvh6CQ7FxZE/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/fvh6CQ7FxZE/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/fvh6CQ7FxZE/hqdefault.jpg",
"width": 480,
"height": 360
}
},
"channelTitle": "Japan aroi sudsud TV",
"liveBroadcastContent": "none"
}
}
]
}

为此,我在 Go 中为此创建了一个结构

type YoutubeData struct {
Kind string `json:"kind"`
Etag string `json:"etag"`
NextPageToken string `json:"nextPageToken"`
RegionCode string `json:"regionCode"`
PageInfo struct {
TotalResults string `json:"totalResults"`
ResultsPerPage string `json:"resultsPerPage"`
} `json:"pageInfo"`
Items []struct {
Kind string `json:"kind"`
Etag string `json:"etag"`
Id struct {
Kind string `json:"kind"`
VideoId string `json:"videoId"`
} `json:"id"`
Snippet struct {
PublishedAt string `json:"publishedAt"`
ChannelId string `json:"channelId"`
Title string `json:"title"`
Description string `json:"description"`
Thumbnails struct {
Default struct {
Url string `json:"url"`
Width string `json:"width"`
Height string `json:"height"`
} `json:"default"`
Medium struct {
Url string `json:"url"`
Width string `json:"width"`
Height string `json:"height"`
} `json:"medium"`
High struct {
Url string `json:"url"`
Width string `json:"width"`
Height string `json:"height"`
} `json:"high"`
} `json:"thumbnails"`
ChannelTitle string `json:"channelTitle"`
LiveBroadcastContent string `json:"liveBroadcastContent"`
} `json:"snippet"`
} `json:"items"`
}

我用这个方法解码了它

youtubeData := YoutubeData{}

if json.Unmarshal(b, &youtubeData); err != nil {

} else {

}

其中b是从Youtube API接收到的字节数据。当我将字节对象打印到我的控制台时,我成功地获取了字节对象中的所有数据,但是,一旦我解码它并尝试使用 {{.}} 将其输出到模板上,我收到了

{youtube#searchListResponse "5g01s4-wS2b4VpScndqCYc5Y-8k/JwGY0TWwWswjZ9LOvemaF5yxsMo" CBQQAA TH { } []}

除了 json 对象和数组中的数据是 pageInfoitems 之外,所有数据都被解码。那里只是空白。我相信我正确地导出了它们。当涉及到 json 解码时,是否有一些额外的步骤将数据放入嵌套在 Go 中另一个结构中的 slice 或结构中?

最佳答案

我想通了,当我使用自动生成的 json 去从

https://mholt.github.io/json-to-go/

现在它完美运行了。我再也不会手工制作它了。

关于arrays - 将带有嵌套数组和对象的 JSON 数据解码为 Go 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38420925/

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