Strange Python Issue, 'unicode' Object Has No Attribute 'read'
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
Solution 1:
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()
Solution 2:
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.
Post a Comment for "Strange Python Issue, 'unicode' Object Has No Attribute 'read'"