Raise JSON解码错误期望值:第1行第1列(字符0)

2024-04-27 01:02:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Django创建一个网站。 下面是我的代码:

views.py:

for i in range(0,len(userdata)):
        json_hall = requests.get(
            "https://www.onebookingsystem.com/API/Admin/booking_list_id.php?id=%s" % userdata[i]['bookid'])
        r = json_hall.json()
        hall_data = json.loads(json_hall.text)
        id_data[i]['bookid'] = hall_data[0]['bookid']

当我运行时,我会得到这样的错误

File "D:\KarthikWorkSpace\Projects\Python\obs_admin\Application\obs_app\views.py", line 1968, in bookings_owner
hall_data = json.loads(json_hall.text)

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

json.decoder.JSONDecodeError:预期值:第1行第1列(字符0)

任何帮助都将不胜感激


Tags: djangotextinpyidjsondatavalue
2条回答

在使用requests时,响应对象上的.json()方法已经为您提供了一个Python对象(从文本响应解码)

您不需要使用json.loads再次解析数据。顺便说一句,这里有一种更具python风格的方法来迭代数据:

for (idx, user) in enumerate(userdata):
    response = requests.get(
            "https://www.onebookingsystem.com/API/Admin/booking_list_id.php?id=%s" % user['bookid'])
    hall_data = response.json()
    id_data[idx]['bookid'] = hall_data[0]['bookid']
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

这通常意味着您试图解码的字符串为空,例如:

>>> import json
>>> json.loads('')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

请确保您发送的请求正确无误

您可以打印或检查response.text以确认这一点

相关问题 更多 >