With Python 3 I am requesting a json document from a URL.

```
response = urllib.request.urlopen(request)

```

The `response` object is a file-like object with `read` and `readline` methods. Normally a JSON object can be created with a file opened in text mode.

```
obj = json.load(fp)

```

What I would like to do is:

```
obj = json.load(response)

```

This however does not work as urlopen returns a file object in binary mode.

A work around is of course:

```
str_response = response.read().decode('utf-8')
obj = json.loads(str_response)

```

but this feels bad...

Is there a better way that I can transform a bytes file object to a string file object? Or am I missing any parameters for either `urlopen` or `json.load` to give an encoding?