0

我正在使用 JSON 从 API 获取一些数据,如果输入的 URL 错误(很可能)JSON 文件返回:“未知符号”

错误信息如下:(不要害怕很多它只是相关信息,向下滚动到底部我已经突出了主要错误。)

Environment:



Request Method: POST

Request URL: http://127.0.0.1:8000/buy/



Django Version: 3.1.2

Python Version: 3.7.0

Installed Applications:

['django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'accounts']

Installed Middleware:

['django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware']







Traceback (most recent call last):

File "C:\Users\VARDHAN\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 353, in raw_decode

obj, end = self.scan_once(s, idx)



During handling of the above exception (0), another exception occurred:

File "C:\Users\VARDHAN\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\exception.py", line 47, in inner

response = get_response(request)

File "C:\Users\VARDHAN\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response

response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\VARDHAN\AppData\Local\Programs\Python\Python37\lib\site-packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view

return view_func(request, *args, **kwargs)

File "C:\Users\VARDHAN\Desktop\python websites\trading_website\accounts\views.py", line 116, in buy

json_data = requests.get(url).json()

File "C:\Users\VARDHAN\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\models.py", line 900, in json

return complexjson.loads(self.text, **kwargs)

File "C:\Users\VARDHAN\AppData\Local\Programs\Python\Python37\lib\json\__init__.py", line 348, in loads

return _default_decoder.decode(s)

File "C:\Users\VARDHAN\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 337, in decode

obj, end = self.raw_decode(s, idx=_w(s, 0).end())

File "C:\Users\VARDHAN\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 355, in raw_decode

raise JSONDecodeError("Expecting value", s, err.value) from None



**Exception Type: JSONDecodeError at /buy/
Exception Value: Expecting value: line 1 column 1 (char 0)**


我试过的修复:

try:
    ....
               
except JSONDecodeError:
                       messages.error(request, "The is ticker is either wrong or not supported. Please try another one :)")
                       return redirect ("buy")
4

1 回答 1

0

当您调用 API 时,您的 API 调用可能会失败并仅返回字符串或空响应。我建议您首先检查您的响应的状态代码,如下所示,然后处理 json 数据。

    data = requests.get(url)
    if data.status != 200:
        raise Exception("Error") 
   json_data = data.json()

于 2021-01-11T10:45:57.037 回答