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

Python导入多讨论JSON文件时JSONDecodeError问题求助

解决JSONDecodeError: Extra data问题

问题原因

你的JSON文件里是多个独立的JSON对象(每个讨论对应一个{}),但Python的json.load()只能读取单个JSON值(要么是一个对象,要么是一个包含所有对象的数组),多个独立对象连在一起不符合JSON规范,所以触发JSONDecodeError。

解决方案

方法1:手动修改JSON文件(适合小文件)

把所有讨论对象放到一个数组里,操作如下:

  • 在文件开头添加[
  • 在文件结尾添加]
  • 在每个对象的末尾(比如第854行的}后面)添加逗号,注意最后一个对象后面不要加逗号

修改后的JSON结构示例:

[
  {
    "Title": "How to get a new badge?",
    ...
  },
  {
   "Title": "feed back on achievement badges",
    ...
  }
]

修改后原代码就能正常读取:

import json
file_json = open("/content/drive/MyDrive/Lab_SC/gh_discussions_badges.json")
data = json.load(file_json)
print(data)

方法2:Python逐行解析(适合大文件)

如果文件太大手动修改麻烦,用代码逐行拼接并尝试解析每个完整的JSON对象:

import json

data_list = []
current_json = ""

with open("/content/drive/MyDrive/Lab_SC/gh_discussions_badges.json", "r") as f:
    for line in f:
        current_json += line.strip()
        try:
            # 尝试解析当前拼接的内容
            discussion = json.loads(current_json)
            data_list.append(discussion)
            current_json = ""  # 重置,准备解析下一个对象
        except json.JSONDecodeError:
            # 内容不完整,继续拼接下一行
            continue

# 查看解析结果
print(f"共解析到{len(data_list)}条讨论")
print(data_list[0])

方法3:用ijson流式解析(适合超大型文件)

如果文件大到无法一次性加载到内存,用ijson库流式解析每个独立对象:

  1. 先安装ijson:
!pip install ijson
  1. 解析代码:
import ijson

data_list = []
current_obj = {}
key = None

with open("/content/drive/MyDrive/Lab_SC/gh_discussions_badges.json", "r") as f:
    # 流式遍历JSON元素
    for prefix, event, value in ijson.parse(f):
        if event == 'map_key':
            key = value
        elif event in ['string', 'number', 'boolean', 'null']:
            current_obj[key] = value
        elif event == 'end_map':
            # 一个讨论对象解析完成
            data_list.append(current_obj)
            current_obj = {}

# 查看结果
print(f"共解析到{len(data_list)}条讨论")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:15:34