我得到了这个错误simplejson.errors.JSONDecodeError:应为值:第1行第1列(字符0)



我希望你做得很好。我正试图从这个网站"solcast.com.au"获取太阳辐射值……我已经查看了他们的API文档,并在这里进行了跟踪https://docs.solcast.com.au/#forecasts-"按位置",我已经应用了代码:

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)

非常感谢你的帮助。

正如John所提到的,您需要在请求中指定您愿意接收的格式。您可以通过在请求中添加标题来完成:

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))

在他们的文档中,他们为您提供了两个附加选项:

  1. "接受"HTTP请求标头,例如​application/json​"对于​JSON
  2. "format"查询字符串,例如​format=json​"对于​JSON
  3. 端点后缀文件扩展名,例如"​forecast.json​"对于​JSON

第二个选项不起作用,至少对于这个特定的请求是这样。第三个选项有效,但有点奇怪。

第一个选项在API中更常用,但也要准备使用其他选项。

附言一下,他们在文档中说"headers={‘Accepts’:‘application/json’"}应该给出所需的结果,所以我认为在其他端点中也可能出现这种情况。

祝好运

相关内容

最新更新