Here is my code and does anyone have any ideas what is wrong? I open my JSON content directly by browser and it works,
data = requests.get(\'http://ws.audios
This error raised because the data
is a unicode/str variable, change the second line of your code to resolve your error:
data = json.loads(data)
json.load
get a file object in first parameter position and call the read
method of this.
Also you can call the json
method of the response to fetch data directly:
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 returns the content as a single (unicode) string. The json.load() function however requires a file-like argument.
The solution is rather simple: Just use loads instead of load
:
data = json.loads(data)
An even better solution though is to simply call json() on the response object directly. So don’t use .text
but .json()
:
data = requests.get(…).json()
While this uses json.loads
itself internally, it hides that implementation detail, so you can just focus on getting the JSON response.