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 處理工具

相關文章

更多文章即將發布...

需要幫助?