ここに私のコードがあり、誰かが何か間違っているアイデアを持っていますか?私は 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
事前に感謝、リン
このエラーは、data
がunicode/str変数であるために発生しました。コードの2行目を変更してエラーを解決します。
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()
requests.get(…).text
は、コンテンツを単一の(Unicode)文字列として返します。 json.load()
関数には、ファイルのような引数が必要です。
解決策はかなり単純です。loads
の代わりに load
を使用するだけです。
_data = json.loads(data)
_
ただし、さらに優れた解決策は、応答オブジェクトで直接 json()
を直接呼び出すことです。したがって、_.text
_ではなく.json()
を使用してください。
_data = requests.get(…).json()
_
これは内部で_json.loads
_自体を使用しますが、その実装の詳細を非表示にするため、JSON応答の取得に集中できます。