Deixe que o objeto JSON aceite bytes ou deixe urlopen as seqüências de saída

Com o Python 3, estou solicitando um documento json a partir de uma UR

response = urllib.request.urlopen(request)

Oresponse object é um objeto semelhante a um arquivo comread ereadline métodos. Normalmente, um objeto JSON pode ser criado com um arquivo aberto no modo de text

obj = json.load(fp)

O que eu gostaria de fazer é:

obj = json.load(response)

Isto, no entanto, não funciona, pois o urlopen retorna um objeto de arquivo no modo binári

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 paraurlopen oujson.load para dar uma codificação?

questionAnswers(11)

yourAnswerToTheQuestion