En apprenant les API et les Decodable actuellement et pour la pratique, j'ai voulu essayer d'imprimer le nom de chaque événement sur Ticketmaster en utilisant leur API. Avec toute tentative de, Im obtenir cette erreur qui m'a été présentée:Extraire des données de l'API TicketMasters (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))
Que Im essayant de faire est d'imprimer juste les noms des événements dans la région de débogage, mais rien ne montre vers le haut. J'ai un struct suivant le protocole décodable nommé Événements:
struct Event: Decodable {
let name: String? }
Et ma tentative de demander les informations de Ticketmaster en utilisant ma clé 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()
Qu'est-ce que je fais mal? C'est saisir les données correctement, ce que je peux dire à cause de l'instruction d'impression que j'ai (print (dataAsString)), mais quand je veux juste afficher les noms, Im obtenir l'erreur.
Voici une image de la structure de données pour référence. Est-ce à cause de la partie embarquée? Toute aide serait vraiment appréciée!
NICE RÉPONSE! Utilitaire de sauvetage. – Jeff