【发布时间】:2026-01-22 23:35:01
【问题描述】:
我正在尝试转换一个使用 urllib3 从 http 请求生成的字符串。
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
data = json.load(data)
File "C:\Python27\Lib\json\__init__.py", line 286, in load
return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
>>> import urllib3
>>> import json
>>> request = #urllib3.request(method, url, fields=parameters)
>>> data = request.data
现在...尝试以下操作时,我收到了该错误...
>>> json.load(data) # generates the error
>>> json.load(request.read()) # generates the error
运行type(data) 和type(data.read()) 都返回<type 'str'>
data = '{"subscriber":"0"}}\n'
【问题讨论】:
-
您的 JSON 有一个额外的括号。这是故意的吗?
-
“将字符串转换为 JSON”是什么意思? JSON是一种字符串格式。您想将 JSON 转换为适当的本机 Python 对象(在本例中是一个将一个字符串映射到另一个字符串的 dict)?还是将一些非 JSON 字符串转换为 JSON 字符串,或者其他的东西?
-
如果
data是一个字符串,type(data.read())不应该工作。 -
事实上,
type(data.read())保证引发与json.load(data)完全相同的异常。我认为他的意思是type(request.read()),它将成功返回str类型。 -
额外的括号是一个错字。对于那个很抱歉。 data.read() 是一个错字。