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

Python读取JSON文件报JSONDecodeError: Extra data错误原因咨询

JSONDecodeError: Extra data 报错触发原因

这个报错的核心逻辑是:Python 内置的json.load() 仅支持解析单个完整合法的JSON根结构,当解析器读取到第一个合法JSON结构的结束位置后,发现流中还有未被纳入当前结构的剩余内容,就会抛出该错误,报错信息里标注的char 177192就是解析器判定第一个合法结构结束的位置。结合你在Colab读取Google Drive中17MB JSON文件的场景,常见触发原因如下:

  • 文件实际为多段独立JSON拼接格式,而非你预期的单数组结构
    很多数据导出工具默认输出JSON Lines格式(每行一个独立JSON对象),不会用[]包裹所有对象、也不会在对象之间加逗号分隔,最终文件内容是连续拼接的独立JSON对象,类似{"id":1,"name":"Joe"}{"id":2,"name":"Jane"}{...}。解析器读到第一个对象末尾的}位置(和你报错的字符位置匹配)就判定解析完成,后面的所有对象都会被识别为多余数据。
    你可以直接读取文件片段查看报错位置的实际内容,快速定位问题:
    with open('GOOGLEDRIVE_FILEPATH/FILE_NAME.json', encoding="utf-8-sig") as f:
        raw_content = f.read()
    # 打印报错位置前后200字符,查看实际内容格式
    print(repr(raw_content[177192-200 : 177192+200]))
    
  • JSON结构存在语法错误
    如果你确认文件应该是单根数组结构,大概率是结构语法出错:
    • 数组提前闭合:比如在某个对象结束位置多写了],导致数组在报错位置就提前结束,后面的所有对象都成了根节点外的多余内容
    • 对象间缺失分隔符:两个相邻JSON对象之间漏写逗号,直接是}{相连,解析器读到第一个}就认为根结构结束
    • 存在未转义的特殊字符:比如字符串里的引号、反斜杠没有按JSON规范转义,导致解析器提前判定结构结束
  • 文件内容损坏或不完整
    17MB文件在写入Google Drive、Colab挂载读取的过程中可能出现损坏:
    • 上传时网络波动导致文件截断,或者重复拼接了多段内容
    • Colab挂载Drive时缓存异常,实际读取到的文件内容不是Drive上存储的完整版本,这种情况重启Colab实例、重新挂载Drive后重试即可排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:30:41