Извлечение информации PlaylistItems из YouTube API (V3) с помощью Swift 4.2 - PullRequest
0 голосов
/ 21 марта 2019

У меня проблема при получении данных 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)

            }
...