Voici mon code et quelqu'un a-t-il des idées sur ce qui ne va pas? J'ouvre mon contenu JSON directement par navigateur et cela fonctionne,
data = requests.get('http://ws.audioscrobbler.com/2.0/?method=library.getartists&api_key=4c22bd45cf5aa6e408e02b3fc1bff690&user=joanofarctan&format=json').text
data = json.load(data)
print type(data)
return data
merci d'avance, Lin
Cette erreur s'est produite car la data
est une variable unicode/str, modifiez la deuxième ligne de votre code pour résoudre votre erreur:
data = json.loads(data)
json.load
récupère un objet fichier à la première position du paramètre et appelle la méthode read
.
Vous pouvez également appeler la méthode json
de la réponse pour récupérer directement les données:
response = requests.get('http://ws.audioscrobbler.com/2.0/?method=library.getartists&api_key=4c22bd45cf5aa6e408e02b3fc1bff690&user=joanofarctan&format=json')
data = response.json()
requests.get(…).text
renvoie le contenu sous la forme d'une chaîne unique (unicode). La fonction json.load()
nécessite cependant un argument de type fichier.
La solution est assez simple: utilisez simplement loads
au lieu de load
:
data = json.loads(data)
Une solution encore meilleure consiste à appeler simplement json()
directement sur l'objet de réponse. N'utilisez donc pas .text
Mais .json()
:
data = requests.get(…).json()
Bien que cela utilise json.loads
Lui-même en interne, il masque les détails de l'implémentation, vous pouvez donc vous concentrer uniquement sur l'obtention de la réponse JSON.