Con Python 3 solicito un documento json desde una URL.
response = urllib.request.urlopen(request)
El responseobjeto es un objeto tipo archivo con ready readlinemé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 urlopeno json.loadpara dar una codificación?