python - 让 JSON 对象接受字节或让 urlopen 输出字符串

标签 python json python-3.x encoding urlopen

使用 Python 3,我从 URL 请求一个 json 文档。

response = urllib.request.urlopen(request)

response 对象是一个类文件对象,具有 readreadline 方法。通常可以使用以文本模式打开的文件来创建 JSON 对象。

obj = json.load(fp)

我想做的是:

obj = json.load(response)

但这不起作用,因为 urlopen 以二进制模式返回文件对象。

解决方法当然是:

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

但这感觉很糟糕......

有没有更好的方法可以将字节文件对象转换为字符串文件对象?或者我是否缺少任何 urlopenjson.load 的参数来提供编码?

最佳答案

Python 出色的标准库来拯救...

import codecs

reader = codecs.getreader("utf-8")
obj = json.load(reader(response))

适用于 py2 和 py3。

文档:Python 2 , Python3

关于python - 让 JSON 对象接受字节或让 urlopen 输出字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6862770/

相关文章:

python - Len 和 Print Len() 的区别

python - 如何为 Pandas 数据框的每一行的列分配一个值?

android - json 值的 img src 属性在 android TextView 中显示蓝色小框

python - 二维数组每列的第一个和最后一个数字 1 的索引

python - 运行时错误 : Attempting to deserialize object on a CUDA device

python - 如何划分轮廓?

python - 对包含字符串文字的行进行标记

json - 选择具有特定键值对但不具有其他键值对的文档

python - 如何根据 JSON 文件进行特定计算

python - 将数据框列中的相似行合并为一个