即使在使用decode('utf-8')之后我也会得到以下错误。
TypeError: the JSON object must be str, not 'bytes'
现在我已经读到很少有人在3.x中遇到类似的问题,但是他们中的大多数都是通过使用解码功能来解决它,这似乎对我不起作用。任何人都可以帮我一把吗?我是Python的初学者。
import urllib.request
import json
request = 'https://api.myjson.com/bins/56els'
response = urllib.request.urlopen(request)
obj = json.load(response)
str_response = response.readall().decode('utf-8')
print(obj)
答案 0 :(得分:0)
你很接近 - 你需要在json.load
之前放置解码。即。
import urllib.request
import json
request = 'https://api.myjson.com/bins/56els'
response = urllib.request.urlopen(request)
str_response = response.readall().decode('utf-8')
obj = json.load(str_response)
print(obj)
您的代码假定网络服务器正在返回“utf-8”编码数据。您应该检查响应上的Content-type
标头并适当地设置解码。或者,使用内置自动解码的Requests
库。它还解码为JSON,这将对您有所帮助。