Deje que el objeto JSON acepte bytes o permita que urlopen cadenas de salida

Con Python 3 solicito un documento json desde una URL.

response = urllib.request.urlopen(request)

Losresponse object es un objeto similar a un archivo conread yreadline 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 alternativa 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 algunos parámetros para cualquieraurlopen ojson.load para dar una codificación?

Respuestas a la pregunta(11)

Su respuesta a la pregunta