JSON(JavaScript Object Notation)和 CSV(Comma-Separated Values)是数据交换和存储中最常用的两种格式。JSON 以其灵活的结构化表示方式广泛应用于 API 接口、配置文件等场景,而 CSV 则因其简洁的表格形式在数据分析、电子表格处理和数据库导入导出中占据主导地位。在实际工作中,我们经常需要将 JSON 数据转换为 CSV 格式,以便利用 Excel、Pandas 等工具进行进一步分析或可视化。
本文将详细介绍如何使用 Python 结合 Free Spire.XLS 库将 JSON 数据转换为 CSV 文件,涵盖环境配置、基本转换、嵌套数据处理以及常见问题的解决方案。
1. 环境准备
在开始之前,请确保您的 Python 环境已安装以下依赖:
- Python 3.6 或更高版本
- Free Spire.XLS for Python 库
使用 pip 安装 Free Spire.XLS:
pip install Spire.XLS.Free
此外,我们还将使用 Python 标准库中的 json 模块处理 JSON 数据(无需额外安装)。
2. 核心实现:将 JSON 数据转换为 CSV 文件
2.1 基础场景:简单 JSON 转 CSV
简单 JSON 指无嵌套、键值对结构统一的 JSON 数组(如 [{"name":"张三","age":25}, ...]),是最基础的转换场景。
实现逻辑:
- 读取并解析 JSON 文件为 Python 列表;
- 提取所有唯一键作为 CSV 表头;
- 初始化
Workbook/Worksheet对象,写入表头和数据; - 保存为 CSV 格式并释放资源。
完整代码:
import json
from spire.xls import *
from spire.xls.common import *
def simple_json_to_csv(json_path: str, csv_path: str) -> None:
""" 简单结构 JSON 转 CSV(无嵌套)
:param json_path: 输入 JSON 文件路径
:param csv_path: 输出 CSV 文件路径
"""
try:
# 1. 读取并解析 JSON 数据
with open(json_path, 'r', encoding='utf-8') as f:
json_data = json.load(f)
# 校验数据格式(必须是包含字典的列表)
if not isinstance(json_data, ) ((item, ) item json_data):
ValueError()
headers = []
item json_data:
key item.keys():
key headers:
headers.append(key)
workbook = Workbook()
worksheet = workbook.Worksheets[]
col_idx, header (headers, start=):
worksheet.Range[, col_idx].Text = header
row_idx, item (json_data, start=):
col_idx, header (headers, start=):
cell_value = item.get(header, )
worksheet.Range[row_idx, col_idx].Text = (cell_value)
worksheet.SaveToFile(csv_path, , Encoding.get_UTF8())
workbook.Dispose()
()
Exception e:
()
__name__ == :
simple_json_to_csv(, )


