strange python issue, 'unicode' object has no attribute 'read'
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.