You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python将request请求解析为JSON时报JSONDecodeError错误如何解决

错误原因

你当前收到的请求体不是JSON格式,而是application/x-www-form-urlencoded类型的表单键值对数据,结构为键1=值1&键2=值2的URL参数拼接格式。json.loads()只能解析符合JSON语法规则的字符串(通常以{、[作为首字符),传入表单格式的字符串自然会触发首字符不符合预期的JSON解析错误。

解决方案

你可以根据实际场景二选一:

方案1:后端适配现有传参格式,直接解析表单数据

如果不需要修改前端传参逻辑,直接用表单解析工具处理请求体即可:

  • 如果是Django框架,框架已经自动封装了表单参数解析,直接调用request.POST即可获取参数:
import json
def checkifaddtocelery(request):
    # 将表单参数转为字典,再序列化为JSON字符串
    body_dict = request.POST.dict()
    print(body_dict)
    conid = json.dumps(body_dict)
    print(conid)
  • 如果是其他Python Web框架,用urllib内置的解析方法处理:
import json
from urllib.parse import parse_qs

def checkifaddtocelery(request):
    body_unicode = request.body.decode('utf-8')
    # 解析表单格式字符串,处理为键值对字典
    body_qs = parse_qs(body_unicode)
    # parse_qs默认值为列表,取第一个元素转为普通字典
    body_dict = {k: v[0] for k, v in body_qs.items()}
    print(body_dict)
    conid = json.dumps(body_dict)
    print(conid)

方案2:修改前端传参逻辑,发送标准JSON格式数据

要求前端发送请求时,将请求头Content-Type设置为application/json,并且请求体内容为标准JSON字符串而非表单拼接格式,修改后你原有json.loads的解析逻辑即可正常运行。

内容的提问来源于stack exchange,提问作者Jonathan Prieto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 08:30:05