Je reçois cette erreur dans Python 3.5.1.
json.decoder.JSONDecodeError: valeur attendue: ligne 1 colonne 1 (caractère 0)
Voici mon code:
import json
import urllib.request
connection = urllib.request.urlopen('http://python-data.dr-chuck.net/comments_220996.json')
js = connection.read()
print(js)
info = json.loads(str(js))
Si vous regardez la sortie que vous recevez de print()
et que vous voyez également dans votre trace, vous verrez que la valeur que vous récupérez n'est pas une chaîne, mais un objet bytes (préfixé par b
):
b'{\n "note":"This file .....
Si vous récupérez l'URL à l'aide d'un outil tel que curl -v
, vous verrez que le type de contenu est
Content-Type: application/json; charset=utf-8
C'est donc JSON, codé en UTF-8, et Python considère qu'il s'agit d'un flux d'octets, pas d'une simple chaîne. Afin d'analyser cela, vous devez d'abord le convertir en chaîne.
Changez la dernière ligne de code en ceci:
info = json.loads(js.decode("utf-8"))
dans mon cas, certains caractères comme ",:" '{} [] "peuvent corrompre le format JSON, utilisez essayez json.loads (str) sauf pour vérifier votre entrée