I've been trying to update a small Python library called libpynexmo to work with Python 3.
I've been stuck on this function:
def send_request_json(self, request): url = request req = urllib.request.Request(url=url) req.add_header('Accept', 'application/json') try: return json.load(urllib.request.urlopen(req)) except ValueError: return False
When it gets to this, json responds with:
TypeError: the JSON object must be str, not 'bytes'
I read in a few places that for json.load
you should pass objects (In this case an HTTPResponse
object) with a .read()
attached, but it doesn't work on HTTPResponse
objects.
I'm at a loss as to where to go with this next, but being that my entire 1500 line script is freshly converted to Python 3, I don't feel like going back to 2.7.
Facing the same problem I solve it using decode()
... rawreply = connection.getresponse().read() reply = json.loads(rawreply.decode())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With