我为什么在尝试在字符串上使用 `json.load` 时会收到 "'str' 对象没有 'read' 属性" 的错误提示?
我为什么在尝试在字符串上使用 `json.load` 时会收到 "'str' 对象没有 'read' 属性" 的错误提示?
这个问题在此处已有答案:
在Python中,我遇到了一个错误:
Exception: (<type 'exceptions.AttributeError'>, AttributeError("'str' object has no attribute 'read'",), )
给出的Python代码:
def getEntries (self, sub): url = 'http://www.reddit.com/' if (sub != ''): url += 'r/' + sub request = urllib2.Request (url + '.json', None, {'User-Agent' : 'Reddit desktop client by /user/RobinJ1995/'}) response = urllib2.urlopen (request) jsonStr = response.read() return json.load(jsonStr)['data']['children']
这个错误的意思是什么,我做了什么导致了它?
admin 更改状态以发布 2023年5月20日
好吧,这是一个老帖子但是。我遇到了同样的问题,我的问题是我使用了 json.load
而不是 json.loads
这样,json就没有问题加载任何类型的字典。
json.load - 反序列化fp(一个包含JSON文档的读支持文本文件或二进制文件)为一个Python对象,使用此转换表。
json.loads - 反序列化s(包含JSON文档的str、bytes或bytearray实例)为一个Python对象,使用此转换表。
问题在于,对于json.load
,您应该传递一个定义了read
函数的文件类型对象。所以,您要么使用json.load(response)
,要么使用json.loads(response.read())
。