Com o Python 3, estou solicitando um documento json a partir de uma URL.
response = urllib.request.urlopen(request)
O response
objeto é um objeto parecido com um arquivo com read
e readline
métodos. Normalmente, um objeto JSON pode ser criado com um arquivo aberto no modo de texto.
obj = json.load(fp)
O que eu gostaria de fazer é:
obj = json.load(response)
No entanto, isso não funciona, pois o urlopen retorna um objeto de arquivo no modo binário.
Uma solução alternativa é, obviamente:
str_response = response.read().decode('utf-8')
obj = json.loads(str_response)
mas isso parece ruim ...
Existe uma maneira melhor de transformar um objeto de arquivo de bytes em um objeto de arquivo de string? Ou estou faltando algum parâmetro para uma codificação urlopen
ou json.load
para ela?