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

Python转换嵌套JSON为CSV时报JSONDecodeError如何解决?

嵌套JSON转CSV解决方案

1 解决JSONDecodeError报错

该报错核心原因是JSON文件不符合标准解析规则,常见场景对应解决方法:

  • 如果是逐行存储单条JSON的JSON Lines格式(非外层包裹[]的标准JSON数组),不要一次性读取整个文件解析,改为逐行解析:
import json

parsed_rows = []
with open("输入文件路径.json", "r", encoding="utf-8") as f:
    for line in f:
        stripped_line = line.strip()
        if not stripped_line:
            continue
        try:
            parsed_rows.append(json.loads(stripped_line))
        except json.JSONDecodeError as e:
            print(f"异常行内容: {stripped_line}\n错误信息: {e}")
  • 如果是标准JSON格式报错,打印报错行修正语法即可:常见错误包括字符串用单引号、末尾多余逗号、存在未转义的双引号/换行符。

2 嵌套JSON扁平化转CSV,避免数据存入单列

直接调用pandas内置的json_normalize方法,自动递归提取所有叶子节点为扁平字段,自动兼容整数、字符串混合类型,无需自定义递归逻辑:

import pandas as pd

# 直接传入第一步解析得到的JSON对象列表
df = pd.json_normalize(parsed_rows)
# 导出CSV,用utf-8-sig编码避免中文乱码
df.to_csv("输出结果.csv", index=False, encoding="utf-8-sig")

如果你的JSON本身是标准外层数组格式,解析成功后直接传入即可:

import json
import pandas as pd

with open("输入文件路径.json", "r", encoding="utf-8") as f:
    full_data = json.load(f)
df = pd.json_normalize(full_data)
df.to_csv("输出结果.csv", index=False, encoding="utf-8-sig")

特殊场景适配

如果JSON中包含数组类型的嵌套字段,需要把数组拆分为多行,在json_normalize中新增record_path参数指定数组路径、meta参数指定需要保留的上层公共字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:45:02