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

Python转换含多根JSON对象的文件至CSV时遇JSONDecodeError的解决方法(无需修改原JSON)

解决多独立JSON对象转CSV的问题

这个报错的根源很清晰:你的JSON文件包含多个独立的JSON对象(而非一个统一的数组或单个对象),但标准的json.load()只能解析单一的JSON结构。当它读完第一个对象后,遇到第二个{就会判定为多余数据,抛出JSONDecodeError。

下面是无需修改原文件的解决方案,核心是利用json.JSONDecoder().raw_decode()方法逐个解析每个独立的JSON对象,再合并数据写入CSV:

import csv
import json

# 定义文件路径
input_path = "C:\\python\\SampleJSON.json"
output_path = "workspaceExcelDemo.csv"

# 读取整个文件内容
with open(input_path, 'r', encoding='utf-8') as file:
    raw_data = file.read()

# 初始化JSON解码器,用于逐个解析独立对象
decoder = json.JSONDecoder()
current_pos = 0
all_projects = []

# 循环解析所有JSON对象
while current_pos < len(raw_data):
    try:
        # 解析当前位置的JSON对象,返回对象和下一个对象的起始位置
        json_obj, current_pos = decoder.raw_decode(raw_data, current_pos)
        # 将当前对象的content列表合并到总列表中
        all_projects.extend(json_obj["content"])
        # 跳过对象之间的空白字符(换行、空格等)
        while current_pos < len(raw_data) and raw_data[current_pos].isspace():
            current_pos += 1
    except json.JSONDecodeError as e:
        print(f"解析过程中遇到错误: {e}")
        break

# 写入CSV文件
with open(output_path, "w", encoding="utf-8", newline='') as file:
    csv_writer = csv.writer(file)
    # 写入表头(这里扩展了一些字段,你可以根据需求调整)
    csv_writer.writerow(["id", "name", "rsid", "description", "type", "owner_id", "created"])
    # 遍历所有项目数据写入行
    for project in all_projects:
        # 安全提取owner的id,避免键不存在的情况
        owner_id = project["owner"]["id"] if "owner" in project and "id" in project["owner"] else ""
        csv_writer.writerow([
            project.get("id", ""),
            project.get("name", ""),
            project.get("rsid", ""),
            project.get("description", ""),
            project.get("type", ""),
            owner_id,
            project.get("created", "")
        ])

代码说明:

  • raw_decode()方法会从指定位置开始解析JSON对象,并返回解析后的对象和下一个未解析字符的位置,完美适配多个独立JSON对象的场景
  • 我们跳过对象之间的空白字符,避免因为换行、空格导致解析失败
  • 使用get()方法和条件判断提取字段,避免因字段缺失引发KeyError
  • 合并所有content列表后统一写入CSV,保证数据完整性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:47:39