I got this error simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
I got this error simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
希望你一切顺利。
我正在尝试从该网站 'solcast.com.au' 获取太阳辐射值。我已经访问了他们的 API 文档并在此处进行了跟踪 ' https://docs.solcast.com.au/#forecasts-by-location' 并且我应用了代码:
import requests
url = 'https://api.solcast.com.au/world_radiation/forecasts?latitude= -33.865143&longitude=151.209900&api_key=MYAPI'
res = requests.get(url)
data = res.json()
forecast = data["forecasts"]["ghi"]
print('forecastss: {} dgree'.format(forecast))
所以当我 运行 代码时,我得到了这个错误:
Traceback (most recent call last):
File "/home/pi/Desktop/solcastoo.py", line 5, in <module>
data = res.json()
File "/usr/lib/python3/dist-packages/requests/models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 518, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
非常感谢您的帮助。
正如约翰提到的,您需要在请求中指定您愿意接收的格式。
您可以通过在请求中添加 headers 来实现:
import requests
url = 'https://api.solcast.com.au/world_radiation/forecasts?latitude= -33.865143&longitude=151.209900&api_key=API_KEY'
res = requests.get(url, headers={'Content-Type': 'application/json'})
data = res.json()
forecast = data["forecasts"][0]["ghi"]
print('forecastss: {} dgree'.format(forecast))
在他们的文档中,他们为您提供了两个额外的选择:
- “接受”HTTP 请求header,例如“ application/json ”为 JSON
- “format”查询字符串,例如“ format=json ” for JSON
- 端点后缀文件扩展名,例如“ forecasts.json ”代表 JSON
第二个选项不起作用,至少对于这个特定的请求。第三个选项有效,但有点奇怪。
第一个选项在 API 中更常用,但也请准备好使用其他选项。
PS 他们在文档中说`headers={'Accepts': 'application/json'}
应该会给出想要的结果,所以我认为它也可能在其他端点出现。
祝你好运
希望你一切顺利。 我正在尝试从该网站 'solcast.com.au' 获取太阳辐射值。我已经访问了他们的 API 文档并在此处进行了跟踪 ' https://docs.solcast.com.au/#forecasts-by-location' 并且我应用了代码:
import requests
url = 'https://api.solcast.com.au/world_radiation/forecasts?latitude= -33.865143&longitude=151.209900&api_key=MYAPI'
res = requests.get(url)
data = res.json()
forecast = data["forecasts"]["ghi"]
print('forecastss: {} dgree'.format(forecast))
所以当我 运行 代码时,我得到了这个错误:
Traceback (most recent call last):
File "/home/pi/Desktop/solcastoo.py", line 5, in <module>
data = res.json()
File "/usr/lib/python3/dist-packages/requests/models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 518, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
非常感谢您的帮助。
正如约翰提到的,您需要在请求中指定您愿意接收的格式。 您可以通过在请求中添加 headers 来实现:
import requests
url = 'https://api.solcast.com.au/world_radiation/forecasts?latitude= -33.865143&longitude=151.209900&api_key=API_KEY'
res = requests.get(url, headers={'Content-Type': 'application/json'})
data = res.json()
forecast = data["forecasts"][0]["ghi"]
print('forecastss: {} dgree'.format(forecast))
在他们的文档中,他们为您提供了两个额外的选择:
- “接受”HTTP 请求header,例如“ application/json ”为 JSON
- “format”查询字符串,例如“ format=json ” for JSON
- 端点后缀文件扩展名,例如“ forecasts.json ”代表 JSON
第二个选项不起作用,至少对于这个特定的请求。第三个选项有效,但有点奇怪。
第一个选项在 API 中更常用,但也请准备好使用其他选项。
PS 他们在文档中说`headers={'Accepts': 'application/json'} 应该会给出想要的结果,所以我认为它也可能在其他端点出现。
祝你好运