我为什么在尝试在字符串上使用 `json.load` 时会收到 "'str' 对象没有 'read' 属性" 的错误提示?

15 浏览
0 Comments

我为什么在尝试在字符串上使用 `json.load` 时会收到 "'str' 对象没有 'read' 属性" 的错误提示?

这个问题在此处已有答案

如何在Python中解析(读取)和使用JSON?

在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日
0
0 Comments

好吧,这是一个老帖子但是。我遇到了同样的问题,我的问题是我使用了 json.load 而不是 json.loads

这样,json就没有问题加载任何类型的字典。

官方文档

json.load - 反序列化fp(一个包含JSON文档的读支持文本文件或二进制文件)为一个Python对象,使用此转换表。

json.loads - 反序列化s(包含JSON文档的str、bytes或bytearray实例)为一个Python对象,使用此转换表。

0
0 Comments

问题在于,对于json.load,您应该传递一个定义了read函数的文件类型对象。所以,您要么使用json.load(response),要么使用json.loads(response.read())

0