r/learnpython • u/Feisty_Treacle_2416 • 3h ago
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
import requests
# Add ?format=j1 to get a proper JSON response
url = "https://wttr.in"
response = requests.get(url)
data = response.json()
# This structure matches the j1 JSON format returned by wttr.in
current_temp = data['current_condition'][0]['temp_C']
print(
f
"Current temperature: {current_temp}°C")
I keep getting this exact SAME error whenever I work with public API's. I save the new codes in the files.
5
u/TabAtkins 3h ago
Print the actual value you received. You will find that it is, in fact, not JSON, but rather HTML, because you ignored the comment in your own code telling you how to correctly fetch JSON from that website.
1
u/favorite_stuff 3h ago
Those comments do a pretty good job of explaining, tbh.
You are not getting json from this API unless you ask for it. Once you do, it should follow that structure.
But hey, slow down and explore. Take what you're getting and print it. See what it's like. Or read the documentation for wttr.in and see what it says.
1
u/AlexMTBDude 1h ago
Print the response so that you know what goes wrong:
response = requests.get(url)
print(response) # Add this line
1
11
u/nick_at_dolt 3h ago
Your code has a comment that says
Did you add ?format=j1 to the URL?