Avec Python 3, je demande un document json à partir d'une URL.
response = urllib.request.urlopen(request)
Le site response
est un objet de type fichier avec read
y readline
méthodes. Normalement, un objet JSON peut être créé avec un fichier ouvert en mode texte.
obj = json.load(fp)
Ce que je voudrais faire, c'est :
obj = json.load(response)
Cependant, cela ne fonctionne pas car urlopen renvoie un objet fichier en mode binaire.
Il existe bien sûr une solution de contournement :
str_response = response.read().decode('utf-8')
obj = json.loads(str_response)
mais ça fait mal...
Existe-t-il un meilleur moyen de transformer un objet fichier d'octets en un objet fichier de chaîne de caractères ? Ou est-ce qu'il me manque des paramètres pour l'un ou l'autre urlopen
o json.load
pour donner un encodage ?