【问题标题】:Raise JSON decode Error Expecting value: line 1 column 1 (char 0)引发 JSON 解码错误预期值:第 1 行第 1 列(字符 0)
【发布时间】:2020-02-07 09:10:50
【问题描述】:

我正在使用 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)

任何帮助将不胜感激。

【问题讨论】:

  • json_hall.json() 会给json已经不使用json.loads了
  • 我试过不使用 json.loads,但它仍然给出了同样的错误。

标签: python json django


【解决方案1】:
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 以确认。

【讨论】:

    【解决方案2】:

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

    您无需使用json.loads 再次解析数据。顺便说一下,这里有一种更 Pythonic 的方式来迭代您的数据:

    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.loads 进行解析,但错误仍然存​​在。
    猜你喜欢
    • 2020-02-28
    • 2021-09-20
    • 1970-01-01
    • 2019-09-10
    • 2019-06-10
    • 2020-04-18
    • 2020-01-02
    • 1970-01-01
    • 2020-08-16
    相关资源
    最近更新 更多