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

Python读取JSON文件报JSONDecodeError: Extra data错误该如何解决?

错误原因

你收到的JSONDecodeError: Extra data报错核心原因是读取的JSON文件格式不符合标准JSON规范:

  • 标准JSON要求单份文件只能包含一个顶层JSON结构(要么单个对象,要么一个包含多个对象的数组)
  • 你当前的users.json属于JSON Lines(行存JSON)格式,每行是一个独立的JSON对象,既没有被包裹在数组中,不同对象之间也没有用逗号分隔,因此一次性读取全量内容解析时,解析完第一行对象后检测到剩余内容就会抛出多余数据的错误。
解决方案

方案1:适配现有JSON Lines格式解析(推荐,无需修改源文件)

逐行读取文件,每行单独做JSON解析,把所有解析后的字典存入列表即可,修改后的代码如下:

import json

json_list = []
with open("users.json", "r", encoding="utf-8") as f:
    # 逐行遍历文件
    for line in f:
        # 跳过空行避免解析错误
        line = line.strip()
        if not line:
            continue
        # 单行解析JSON
        item = json.loads(line)
        json_list.append(item)

# 打印验证结果
print(f"共解析到{len(json_list)}条数据")
print(type(json_list[0]))

方案2:修改源文件为标准JSON格式

如果不想调整代码,可修改users.json内容,把所有对象放到一个数组中,对象之间用逗号分隔,修改后的JSON内容如下:

[
  {"_id":{"$od":"5f12"},"ready":true,"createdon":{"$date":1609687444800},"lastLogin":{"$date":1858},"position":"consumer","signUp":"Email","state":"WI"},
  {"_id":{"$od":"5f12"},"ready":true,"createdon":{"$date":1609687444800},"lastLogin":{"$date":1858},"position":"consumer","signUp":"Email","state":"WI"}
]

修改后你原本的代码就可以正常运行,最终返回的json_value是一个包含两个字典的列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:24:03