У меня проблема при получении данных playlistItems из Youtube API (V3) с помощью Alamofire.Я пытаюсь декодировать данные JSON, извлекаемые из API Youtube.
Я пробовал много решений, но ни одно из них не помогло мне.Я хочу получить доступ к "items", но там написано "Ожидается декодирование словаря, но вместо этого найдена строка / данные."1007 * Вот мой код:
struct PageInfo: Decodable {
var totalResults = 0
var resultsPerPage = 0
}
struct Snippet: Decodable {
var publishedAt: PublisedAt
var channelId = ""
var position = 0
var title = ""
var description = ""
var thumbnails: Thumbnail
var channelTitle = ""
var playListId = ""
var resourceId: Resource
}
struct ContentDetails: Decodable {
var videoId = ""
var videoPublishedAt = ""
}
struct Resource: Decodable {
var kind = ""
var videoId = ""
}
struct PublisedAt: Decodable {
var publishedAt = ""
}
struct ChannelUrl: Decodable {
var url = ""
var width = ""
var height = ""
}
struct Thumbnail: Decodable {
var medium: ChannelUrl
var high: ChannelUrl
var standard: ChannelUrl
var maxres: ChannelUrl
}
struct Item: Decodable {
var kind = ""
var etag = ""
var id = ""
var snippet: Snippet
var contentDetails: ContentDetails
}
struct Result: Decodable {
var kind = ""
var etag = ""
var nextPageToken = ""
var pageInfo: PageInfo
var items: [Item]
}
А это мой класс;
class VideoModel: NSObject {
let API_KEY = "My_API_KEY"
let UPLOAD_PLAYLIST_ID = "MY_Playlist_ID"
let VIDEO_URL = "https://www.googleapis.com/youtube/v3/playlistItems"
var snippets = [String]()
func getFeedVideos() {
Alamofire.request(VIDEO_URL, method: .get, parameters: ["part":"snippet, contentDetails", "playlistId": UPLOAD_PLAYLIST_ID, "key":API_KEY], encoding: URLEncoding.default, headers: nil).responseJSON { (response) in
guard let data = response.data else {
NSLog("no data")
return
}
do {
let decoded = try JSONDecoder().decode(Result.self, from: data)
debugPrint(decoded)
decoded.items.forEach({ (itemss) in
print(itemss.snippet.title)
self.snippets.append(itemss.snippet.title)
})
} catch {
debugPrint(error)
}