何謂 JSON 轉 CSV 轉換器
本頁面工具讓用戶上載(或拖放)一個 JSON 檔案,並將其轉換為 CSV 檔案。用戶可以選擇輸出 CSV 的分隔符(逗號、分號或製表符)、預覽表格內容,然後下載轉換結果。整個處理過程完全在瀏覽器中進行——沒有任何資料上傳至伺服器。這項工具與同系列中其他轉換方向(如 CSV 轉 Excel 或 Excel 轉 JSON)的最大差異在於,它需要將一種層級化、具備型別的資料格式「壓平」成一種扁平的純文字表格。
JSON 支援物件、陣列、數字、布林值及 null,並允許任意巢狀結構;而 CSV 則沒有型別、沒有巢狀、沒有分頁(sheet)。轉換會丟失所有型別資訊、巢狀結構、多重分頁(JSON 本身沒有分頁概念),以及任何格式化設定。為了將巢狀的 JSON 物件塞進 CSV,工具使用「點路徑」(dot‑path)記法來展開鍵名,例如 address.city。陣列中的物件會成為表格列;陣列中的陣列則保留為列。由於 CSV 使用分隔符,值內若包含逗號或換行符,必須加上引號——工具會自動處理,但數字開頭的零可能會被捨棄。
輸入與輸出規格
輸入
- 單一 JSON 檔案。
- CSV 分隔符:逗號、分號或製表符。
輸出
- 一個可供下載的 CSV 檔案。
- 一個轉換後的表格預覽。
- 列數及欄數統計。
- 輸出檔案大小。
所有處理均為用戶端完成,不傳送資料到任何伺服器,這對注重私隱的工作流程尤其重要。
轉換機制:扁平化與型別遺失
巢狀物件展平
當 JSON 是一個物件陣列(例如 [{ "name": "Alice", "address": { "city": "HK", "zip": "999077" } }])時,工具會將巢狀物件展平:address.city 成為一個欄位,address.zip 成為另一個欄位。結果表格的標題行就是這些展平後的點路徑鍵。每一個物件變成一列。
陣列處理
如果 JSON 直接是一個陣列的陣列(例如 [["A","B"], ["C","D"]]),則每個內部陣列變成一列,元素依次對應各欄,不會產生鍵名。
如果陣列中包含混合類型,或結構非矩形(例如某些列多幾個元素),工具仍然會嘗試對應,但多出的欄位可能為空。
型別轉換
所有 JSON 值——數字、布林值、null——在 CSV 中一律變成字串。這意味著轉換後無法保留數字格式,例如 0234 在 CSV 中可能變成 234(因為 JSON 數字不保留前導零)。布林值 true 與 false 變成字串 "true" 與 "false",null 變成空單元格。CSV 沒有原生支援日期或特殊格式,所有資料都以純文字表示。
CSV 引用規則
工具會自動對值中的逗號、換行符及雙引號進行轉義。例如一個值包含逗號 "a,b",輸出時會加上雙引號變成 "a,b"。如果值本身有雙引號,則用兩個雙引號轉義。這些規則遵循 RFC 4180。
錯誤處理與邊界條件
工具設有多項檢查,確保轉換順利執行:
| 錯誤訊息 | 觸發條件 |
|---|---|
| 「This JSON is invalid or not table‑shaped.」 | JSON 語法無效,或結構不是單一陣列(物件的陣列或陣列的陣列) |
| 「This file is too large. Use a file under ‹max›.」 | 檔案超過最大允許大小(8 MB) |
| 「This table has more than ‹max› rows.」 | 資料列數超過上限(10,000 行) |
| 「This table has more than ‹max› columns.」 | 資料欄數超過上限(200 列) |
| 「Choose a CSV, JSON or XLSX file.」 | 選擇了不支援的檔案類型 |
| 「This conversion is taking too long. Try a smaller file.」 | 轉換逾時(約 12 秒) |
另外,工具只轉換可見的值,不會執行公式或程式碼(JSON 本身不含公式)。
使用場景與實務考慮
典型的用戶是一位開發者或分析師,手上有一個從 API 取得的 JSON 回應檔案(例如 REST API 的輸出),需要將其載入至 Excel、Google Sheets 或資料庫匯入工具。由於這些工具通常接受 CSV 而非 JSON,轉換便成為必經步驟。
私隱優勢:所有處理都在瀏覽器端完成,無需將原始 JSON 上傳到任何第三方伺服器。這對包含個人資料或商業機密的檔案特別重要。
分隔符選擇:逗號是最常用的 CSV 分隔符,但若資料本身包含大量逗號(例如地址中的逗號),則選用分號或製表符可減少轉義需求。許多非英語地區的 Excel 預設使用分號作為欄位分隔符。
常見陷阱:
- 前導零遺失:例如郵政編碼
02139變成2139。解決方法是在 JSON 中將其儲存為字串:"02139"而非02139。 - 巢狀結構過深:若 JSON 嵌套五層以上,扁平化後的欄位名稱會變得很長(例如
data.results.user.profile.name.first),可能超出某些軟體的欄位長度限制(Excel 最多 255 個字元)。 - 大型檔案:若 JSON 檔案超過 8 MB,將會被拒絕。表格也限制在 10,000 行和 200 列。如果轉換時間超過約 12 秒,工具會停止轉換。
- 非表格形狀 JSON:若 JSON 是單一物件、巢狀物件而非陣列,或者陣列元素結構不一致,工具會拒絕轉換並顯示錯誤。
常見問題 FAQ
1. 轉換後,JSON 中的布林值 false 變成空字符串,是正常的嗎?
布林值會變成 "true" 或 "false" 字串。null 會變成空單元格。
2. CSV 中的行列順序能否控制? 工具會按照 JSON 物件中鍵的首次出現順序決定欄位順序,不提供排序選項。陣列的陣列則依原始順序。
3. 為什麼只能上載一個 JSON 檔案? 工具設計為一次處理一個檔案。若要合併多個 JSON,請先自行合併為單一陣列再上載。
4. 是否能保留數字型別(如小數點精度)? 不能。所有數字轉為字串。
5. 如果 JSON 非常大,有建議的解決方法? 檔案大小限制為 8 MB。表格也限制在 10,000 行和 200 列。如果轉換時間超過約 12 秒,工具會停止轉換。
6. 能否從陣列內的多個同層級陣列生成多個 CSV 檔案? 此工具只輸出單一 CSV。若需多個表格,請自行拆分輸入檔案。