Я демаршаллизации Youtube ответ JSON в Go структуры, используя данные, полученные от Youtube API следующим образом: -Демаршаллизация 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"
}
}
]
}
Чтобы сделать это, я создал STRUCT для этого в 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"`
}
Я unmarshaled его с помощью этого метода
youtubeData := YoutubeData{}
if json.Unmarshal(b, &youtubeData); err != nil {
} else {
}
В которой b - данные байта, полученные от API Youtube. Я успешно получил все данные в объекте байт, как я напечатал его на моей консоли, однако, как только я unmarshaled его и попытался вывести его на шаблон с помощью {{.}}, Я получил
{youtube#searchListResponse "5g01s4-wS2b4VpScndqCYc5Y-8k/JwGY0TWwWswjZ9LOvemaF5yxsMo" CBQQAA TH { } []}
Все данные немаршалируются, за исключением данных в объекте и массиве json, которые являются страницами и элементами. Они просто пусты. Я считаю, что я правильно их экспортировал. Существуют ли какие-то дополнительные шаги для того, чтобы получить данные в срез или структуру, вложенные внутри другой структуры в Go, когда дело доходит до json unmarshalling?