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