APIとDecodableについて学習しています。実際には、各イベントの名前を、それらのAPIを使用してTicketmasterに表示したいと考えました。 、Imは私に提示し、このエラーを取得するあらゆる試みを持つ:TicketMasters API(Swift 4.0/Decodable)からデータをプルする
Error serializing JSON: typeMismatch(Swift.Array<Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Array<Any> but found a dictionary instead.", underlyingError: nil))
やろうとイムは、プリントアウトだけでデバッグ領域におけるイベントの名前が、何も現れていないとは何ですか。
struct Event: Decodable {
let name: String? }
そして、私のAPIキーを使用してチケットマスターからの情報を要求する私の試み:
//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))のためにわかりますが、名前を表示したいときにエラーが表示されます。
参照用のデータ構造のイメージは次のとおりです。埋め込まれた部分のためですか?どんな援助も本当にありがとう!
NICE ANSWER!人生節約ユーティリティ。 – Jeff