Con Python 3 solicito un documento json desde una URL.
response = urllib.request.urlopen(request)
El response
objeto es un objeto tipo archivo con read
y readline
métodos. Normalmente, un objeto JSON se puede crear con un archivo abierto en modo de texto.
obj = json.load(fp)
Lo que me gustaría hacer es:
obj = json.load(response)
Sin embargo, esto no funciona ya que urlopen devuelve un objeto de archivo en modo binario.
Una solución es, por supuesto:
str_response = response.read().decode('utf-8')
obj = json.loads(str_response)
pero esto se siente mal ...
¿Hay una mejor manera de transformar un objeto de archivo de bytes en un objeto de archivo de cadena? ¿O me faltan parámetros para urlopen
o json.load
para dar una codificación?