Arrays 从TicketMasters API中提取数据(Swift 4.0/可解码)

Arrays 从TicketMasters API中提取数据(Swift 4.0/可解码),arrays,json,swift,api,dictionary,Arrays,Json,Swift,Api,Dictionary,我正在学习API和Decodable,为了练习,我想尝试使用Ticketmaster上的API打印每个事件的名称。每次尝试时,我都会遇到以下错误: Error serializing JSON: typeMismatch(Swift.Array<Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Array<Any> but found a dict

我正在学习API和Decodable,为了练习,我想尝试使用Ticketmaster上的API打印每个事件的名称。每次尝试时,我都会遇到以下错误:

Error serializing JSON: typeMismatch(Swift.Array<Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Array<Any> but found a dictionary instead.", underlyingError: nil))
以及我尝试使用API密钥从Ticketmaster请求信息:

//API String Request
    let jsonUrlString = "https://app.ticketmaster.com/discovery/v2/events.json?countryCode=US&apikey=zqqqmkCdkfslHeaCvqXbxQZFGNXHoAT2"
    guard let url = URL(string: jsonUrlString) else { return }

    //Method to pull information from Ticketmasters API
    URLSession.shared.dataTask(with: url) { (data, response, err) in
        guard let data = data else { return }
        let dataAsString = String(data: data, encoding: .utf8)
        print(dataAsString)

        do {
            let events = try JSONDecoder().decode([Event].self, from: data)
            print(events)
            print()
            print("Done.")
        } catch let jsonErr {
            print("Error serializing JSON:", jsonErr)
        }
    }.resume()
我做错了什么?它正确地抓取了数据,这是因为我有print语句(print(dataAsString)),但是当我只想显示名称时,我得到了错误

这是数据结构的图像,供参考。是因为埋件的原因吗?任何帮助都将不胜感激


我使用以下方法为TicketMaster API响应生成了
Codables

typealias TicketMaster=OtherTicketMaster
结构OtherTicketMaster:可编码{
让链接:其他链接
让嵌入:嵌入
让第页:第页
}
结构其他链接:可编码{
让我们继续:其他的吸引力
让我们先来看看其他的吸引力
让我们下一步:其他吸引力
让他自己:他吸引
}
结构:可编码{
让href:String
}
嵌入结构:可编码{
让事件:[事件]
}
结构事件:可编码{
让信息:字符串?
let分类:[分类]
让链接:其他链接
let embedded:OtherEmbedded
让可访问性:可访问性?
let id:String
让日期:日期
让图像:[图像]
let priceRanges:[价格范围]
让销售:销售
let name:String
让语言环境:字符串
让我们来看看绳子?
让发起人:发起人
让产品:[产品]?
租赁发起人:[发起人]
让我们测试一下:布尔
让我们来看看座位地图:座位地图
let类型:String
让url:String
}
结构分类:可编码{
让我们先来看看:布尔
let子体裁:体裁
让体裁:体裁
let片段:体裁
let子类型:体裁
让类型:体裁
}
结构体裁:可编码{
let id:String
let name:String
}
结构其他链接:可编码{
让他自己:他吸引
让景点:[其他景点]
出租场地:[其他景点]
}
结构OtherEmbedded:可编码{
让我们来看看景点:[景点]
出租场地:[场地]
}
结构吸引力:可编码{
让图像:[图像]
let分类:[分类]
让链接:链接
let id:String
let name:String
let类型:String
让语言环境:字符串
让我们测试一下:布尔
let upcomingEvents:upcomingEvents
让url:String
}
结构链接:可编码{
让他自己:他吸引
}
结构升级事件:可编码{
让ticketmaster:Int?
总数:Int
让tmr:Int?
}
结构地点:可编码{
让generalInfo:generalInfo?
让postalCode:字符串
让boxOfficeInfo:boxOfficeInfo?
让accessibleSeatingDetail:字符串?
让链接:链接
地址:地址
让国家:国家
让城市:城市
让dmas:[Dma]
让位置:位置
让图像:[图像]?
let id:String
让语言环境:字符串
let name:String
让市场:[市场]
让parkingDetail:字符串
让时区:字符串
让国家:国家
让社会:社会?
让我们测试一下:布尔
let upcomingEvents:upcomingEvents
let类型:String
让url:String
}
结构GeneralInfo:Codable{
让孩子统治:字符串?
让generalRule:字符串
}
结构BoxOfficeInfo:Codable{
让openHoursDetail:字符串
let acceptedPaymentDetail:字符串
让phoneNumberDetail:字符串?
让我们调用详细信息:String
}
结构地址:可编码{
第1行:字符串
}
结构国家:可编码{
让countryCode:String
let name:String
}
结构城市:可编码{
let name:String
}
结构Dma:可编码{
让id:Int
}
结构位置:可编码{
让纬度:字符串
让经度:字符串
}
结构市场:可编码{
let id:String
}
结构状态:可编码{
let name:String
让stateCode:String
}
社会结构:可编码{
让推特:推特
}
struct-Twitter:Codable{
让句柄:字符串
}
结构可访问性:可编码{
让信息:字符串
}
结构日期:可编码{
让我们开始:开始
让斯潘倍增:布尔
让状态:状态
让时区:字符串
}
结构开始:可编码{
让localDate:String
让我们一起来看看吧
让我们来谈谈吧,布尔
让dateTime:字符串
让我来说明一下:布尔
让localTime:String
让我们来看看吧
}
结构状态:可编码{
让代码:字符串
}
结构映像:可编码{
让我们退一步:布尔
让比率:字符串?
让属性:字符串?
让高度:Int
让url:String
让宽度:Int
}
结构价格范围:可编码{
让马克斯:加倍
让货币:字符串
让敏:加倍
let类型:String
}
结构销售:可编码{
让预售:[预售]?
让其他人公开:公开
}
结构售前:可编码{
让endDateTime:字符串
让startDateTime:String
让描述:字符串?
let name:String
让url:String?
}
结构公共:可编码{
让startDateTime:String
让endDateTime:字符串
让我们开始吧
}
结构启动子:可编码{
let id:String
let description:字符串
let name:String
}
结构产品:可编码{
let name:String
let id:String
let类型:String
让url:String
}
结构座位映射:可编码{
让静态URL:String
}
结构页:可编码{
让大小:Int
编号:Int
让totalElements:Int
让totalPages:Int
}
//序列化扩展
分机{
静态func from(json:String,使用编码:String.encoding=.utf8)->OtherTicketMaster{
guard let data=json.data(使用:编码)else{return nil}
返回OtherTicketMaster.from(数据:数据)
}
静态函数从(数据:数据)->其他ticketmaster{
let decoder=JSONDecoder()
返回try?decoder.decode(OtherTicketMaster.self,from:data)
}
var-jsonData:数据{
//API String Request
    let jsonUrlString = "https://app.ticketmaster.com/discovery/v2/events.json?countryCode=US&apikey=zqqqmkCdkfslHeaCvqXbxQZFGNXHoAT2"
    guard let url = URL(string: jsonUrlString) else { return }

    //Method to pull information from Ticketmasters API
    URLSession.shared.dataTask(with: url) { (data, response, err) in
        guard let data = data else { return }
        let dataAsString = String(data: data, encoding: .utf8)
        print(dataAsString)

        do {
            let events = try JSONDecoder().decode([Event].self, from: data)
            print(events)
            print()
            print("Done.")
        } catch let jsonErr {
            print("Error serializing JSON:", jsonErr)
        }
    }.resume()