奇怪的python问题,' unicode'对象没有属性' read'

时间:2015-08-16 22:26:46

标签: python json unicode python-requests

这是我的代码,有没有人有任何想法有什么问题?我直接通过浏览器打开my JSON content,它可以正常工作,

data = requests.get('http://ws.audioscrobbler.com/2.0/?method=library.getartists&api_key=4c22bd45cf5aa6e408e02b3fc1bff690&user=joanofarctan&format=json').text
data = json.load(data)
print type(data)
return data
提前谢谢, 林

2 个答案:

答案 0 :(得分:30)

引发此错误是因为data是unicode / str变量,更改代码的第二行以解决错误:

data = json.loads(data)

json.load在第一个参数位置获取一个文件对象并调用此read方法。

您也可以调用响应的json方法直接获取数据:

response = requests.get('http://ws.audioscrobbler.com/2.0/?method=library.getartists&api_key=4c22bd45cf5aa6e408e02b3fc1bff690&user=joanofarctan&format=json')
data = response.json()

答案 1 :(得分:3)

requests.get(…).text将内容作为单个(unicode)字符串返回。然而,json.load()函数需要类似文件的参数。

解决方案非常简单:只需使用loads代替load

data = json.loads(data)

更好的解决方案是直接在响应对象上调用json()。因此,请勿使用.text,而是使用.json()

data = requests.get(…).json()

虽然它在内部使用json.loads,但它隐藏了实现细节,因此您可以专注于获取JSON响应。