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

Django解析JSON报Extra data错误:原因排查与解决方法

Django后台JSON解析报错「Extra data」的原因与解决办法

常见原因

  • 前端发送了多个独立JSON拼接体:你本地测试的是单个合法JSON,但实际请求里可能是多个JSON对象直接连在一起(比如{"a":1}{"b":2}),json.loads只能解析单个JSON实体(对象或数组),这种拼接格式会触发「Extra data」错误。
  • 请求数据末尾存在多余字符:比如不可见的换行符、空格或者其他杂项字符,单个JSON本身合法,但额外字符破坏了整体格式。
  • 重复请求导致数据合并:前端因逻辑问题(比如按钮重复点击、AJAX未防抖)发送了两次请求,服务器端意外接收到两次请求的body拼接数据。

解决步骤

  • 排查前端发送逻辑:确保前端只发送单个JSON对象,或者把多条数据包裹在一个数组里(比如[{"symbol":"XAUUSD"}, {"symbol":"XAUUSD"}]),不要直接拼接多个独立JSON。
  • 打印原始数据排查:在Django视图里先输出接收到的原始数据,确认实际内容是否符合预期:
    def receive_quotes(request):
        raw_data = request.body.decode('utf-8')
        print("原始接收数据:", raw_data)  # 查看实际接收的内容
        try:
            data = json.loads(raw_data)
        except json.JSONDecodeError as e:
            print("解析错误详情:", e)
            # 后续处理逻辑
    
  • 清理多余字符:如果发现数据末尾有多余空格或换行,先做清理再解析:
    raw_data = request.body.decode('utf-8').strip()
    data = json.loads(raw_data)
    
  • 排查重复请求:检查前端代码是否存在重复触发请求的情况,给点击事件加防抖,或者确保AJAX请求只发送一次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:01:04