这是我的代码,有没有人有任何想法有什么问题?我直接通过浏览器打开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
提前谢谢,
林
答案 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响应。