2015-08-16 66 views
7

這是我的代碼,有沒有人有任何想法是什麼錯?我提前直接打開my JSON content通過瀏覽器和它的作品,奇怪的python問題,'unicode'對象沒有屬性'讀'

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

放下'json.load','requests'對象有一個'.json()'方法。 – roippi

+0

請記住點贊回答有用的答案,並且[接受該答案](http://meta.stackexchange.com/a/5235/141542)解決了您的問題,將此問題標記爲已解決。 – poke

回答

17

此錯誤引發,因爲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() 
+0

適合我,謝謝@Mohsen。 :) –

+1

很高興工作@ Lin-Ma :) – Mohsen

+0

工作完美!謝謝 –

2

requests.get(…).text返回內容作爲單個(Unicode)的字符串。然而,json.load()函數需要類似文件的參數。

的解決方案是非常簡單:只需使用loads,而不是load

data = json.loads(data) 

一個更好的解決方案,雖然是簡單地直接調用響應對象上json()。所以,不要用.text.json()

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

雖然這種使用json.loads本身在內部,它隱藏了實現細節,所以你可以只專注於獲得JSON響應。

+0

適合我,謝謝@poke。 –

相關問題