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.audioscrobbler.com/2.0/?method=library.getartists&api_key=4c22bd45cf5aa6e408e02b3fc1bff690&user=joanofarctan&format=json').text
data = json.load(data)
print type(data)
return data
thanks in advance, Lin
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With