Im Lernen über APIs und Decodable derzeit und für die Praxis, wollte ich versuchen, den Namen jedes Ereignisses auf Ticketmaster mit ihrer API zu drucken. Bei jedem Versuch, Im immer diese Fehlermeldung zu mir vorgestellt:Ziehen von Daten von 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))
Was Im Versuch zu tun, ist Ausdruck nur die Namen der Ereignisse in dem Debug-Bereich, aber nichts zeigt nach oben. Ich habe eine Struktur nach den decodierbaren Protokoll namens Events:
struct Event: Decodable {
let name: String? }
Und mein Versuch, die Informationen von Ticket mit meinem API-Schlüssel anfordern:
//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()
Was mache ich falsch? Es greift auf die Daten richtig zu, die ich aufgrund der print-Anweisung (print (dataAsString)) erkennen kann, aber wenn ich nur die Namen anzeigen will, bekomme ich den Fehler.
Hier ist ein Bild der Datenstruktur als Referenz. Liegt es am eingebetteten Teil? Jede Hilfe würde wirklich geschätzt werden!
NICE ANSWER! Lebensrettendes Dienstprogramm. – Jeff