使用 Python 3,我从 URL 请求一个 json 文档。
response = urllib.request.urlopen(request)
response
对象是一个类文件对象,具有 read
和 readline
方法。通常可以使用以文本模式打开的文件来创建 JSON 对象。
obj = json.load(fp)
我想做的是:
obj = json.load(response)
但这不起作用,因为 urlopen 以二进制模式返回文件对象。
解决方法当然是:
str_response = response.read().decode('utf-8')
obj = json.loads(str_response)
但这感觉很糟糕......
有没有更好的方法可以将字节文件对象转换为字符串文件对象?或者我是否缺少任何 urlopen
或 json.load
的参数来提供编码?
最佳答案
Python 出色的标准库来拯救...
import codecs
reader = codecs.getreader("utf-8")
obj = json.load(reader(response))
适用于 py2 和 py3。
关于python - 让 JSON 对象接受字节或让 urlopen 输出字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6862770/