Tutorial

如何使用 Python 将 JSON 转换为 CSV:完整教程与代码示例

学习如何使用 Python 将 JSON 数据转换为 CSV 格式,包含完整代码示例、处理嵌套 JSON 以及数据处理最佳实践。

2025-10-05
5 min read

🐍 如何使用 Python 将 JSON 转换为 CSV:完整教程与代码示例

在日常数据处理中,我们经常会遇到需要把 JSON 格式数据转换为 CSV 表格 的场景,比如导出接口数据、分析日志文件、或导入 Excel 进行可视化。

本文将介绍如何使用 Python 高效地完成 JSON → CSV 的转换,并给出几种常见的实现方式。


📘 一、JSON 与 CSV 的区别

特性JSONCSV
数据结构树状、嵌套结构平面表格
可读性机器与人类皆可读人类易读、结构简单
常用场景Web 接口、API、配置文件Excel、数据库导入导出
典型文件扩展名.json.csv

当你想在电子表格中查看或分析接口返回的 JSON 数据时,就需要将其转换为 CSV。


⚙️ 二、使用 Python 的标准库实现 JSON 转 CSV

Python 自带了强大的 jsoncsv 标准库,可以直接完成转换,无需安装额外依赖。

示例 1:基础版(平面结构 JSON)

import json
import csv

# 读取 JSON 文件
with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 打开 CSV 文件准备写入
with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)

    # 写入表头(从第一个元素的 key 提取)
    header = data[0].keys()
    writer.writerow(header)

    # 写入每一行数据
    for row in data:
        writer.writerow(row.values())

print("✅ JSON 已成功转换为 CSV:output.csv")

输入示例:

[
  {"name": "Alice", "age": 25, "city": "Shanghai"},
  {"name": "Bob", "age": 30, "city": "Beijing"}
]

输出结果(CSV):

name,age,city
Alice,25,Shanghai
Bob,30,Beijing


🧩 三、处理嵌套(Nested)JSON

如果你的 JSON 含有嵌套对象或数组,就需要先"展开"结构。

示例 2:使用 pandas.json_normalize()

import pandas as pd
import json

# 读取嵌套 JSON
with open('nested.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 将嵌套结构展开为平面表格
df = pd.json_normalize(data)

# 导出为 CSV
df.to_csv('output.csv', index=False, encoding='utf-8-sig')

print("✅ 嵌套 JSON 已成功转换为 CSV:output.csv")

示例输入:

[
  {
    "user": {"name": "Alice", "id": 101},
    "stats": {"score": 98, "level": 3}
  },
  {
    "user": {"name": "Bob", "id": 102},
    "stats": {"score": 87, "level": 2}
  }
]

输出结果:

user.name,user.id,stats.score,stats.level
Alice,101,98,3
Bob,102,87,2

✅ 提示:pandas.json_normalize() 会自动将嵌套字段扁平化,非常适合复杂 JSON。


🚀 四、从 URL 读取 JSON 并导出为 CSV

你还可以直接从远程接口(如 API)加载 JSON 数据:

import requests
import pandas as pd

url = "https://jsonplaceholder.typicode.com/users"
data = requests.get(url).json()

df = pd.json_normalize(data)
df.to_csv('users.csv', index=False, encoding='utf-8-sig')

print("✅ 已从 URL 读取 JSON 并导出 CSV")


🧠 五、常见问题(FAQ)

1️⃣ 文件乱码怎么办?

→ 使用 encoding='utf-8-sig' 保存 CSV,确保 Excel 打开正常显示中文。

2️⃣ JSON 根节点不是数组怎么办?

→ 如果 JSON 是单对象(如 {}),可手动包一层数组,例如:

data = [data]

3️⃣ 如何导入 Excel?

→ 在 Excel 中点击「数据」→「自文本/CSV」→ 选择输出文件即可。


🧰 六、完整项目示例

如果你需要一个命令行工具,可以写成:

# json2csv.py
import sys
import pandas as pd

def json_to_csv(input_file, output_file):
    df = pd.read_json(input_file)
    df.to_csv(output_file, index=False, encoding='utf-8-sig')
    print(f"✅ {input_file} 已转换为 {output_file}")

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("用法: python json2csv.py input.json output.csv")
    else:
        json_to_csv(sys.argv[1], sys.argv[2])

执行:

python json2csv.py data.json output.csv


🧭 七、总结

工具适用场景优点
csv + json简单 JSON标准库、零依赖
pandas嵌套 JSON、大文件功能强大、支持批量处理
requests网络数据可直接抓取 API

如果你只是偶尔转换,可以使用在线工具 👉 JsonWork.com/json-to-csv

无需安装 Python,支持 粘贴 / 上传 / 下载,100% 本地处理,更安全便捷。


发布于 2025年10月5日
👨‍💻

JsonWork 团队

致力于为开发者提供最佳的 JSON 处理工具

相关文章

更多文章即将发布...

需要帮助?