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
相关产品推荐
相关产品推荐

