這個工具的用途
將 JSON 物件陣列攤平為嚴格的 RFC 4180 CSV ——可設定巢狀物件的處理方式(dot / bracket / stringify)、自訂分隔符、 以及選用的標頭列。當你拿到 JSON API 回應、想倒入試算表、只吃 CSV 的 BI 工具,或一次性 COPY FROM 進 Postgres 時很實用。
輸出嚴格遵循 RFC 4180 的引號規則:含分隔符、雙引號或換行字元的儲存格 會以 "…" 包覆,內部的引號會加倍。第一列為 標頭(物件鍵依首次出現順序),之後每一列對應一個物件。不會上傳任何 資料——轉換在瀏覽器內以串流序列化器執行。
使用步驟
貼上 JSON 物件陣列(或載入範例),選擇分隔符與巢狀鍵策略(dot / bracket / stringify),即可在右側讀到 CSV。標頭列是所有鍵的聯集(依 首次出現順序);某個物件缺漏的鍵會渲染為空的引號字串。
輸入: [{"id":1,"name":"ada","email":"ada@example.com"},{"id":2,"name":"linus","email":"linus@example.com"}]
輸出(CSV):
id,name,email
1,ada,ada@example.com
2,linus,linus@example.com限制與邊界情況
- CSV 需要陣列(或單一物件,會被包成單列表)。 像
[1, 2, 3]這樣的原始型別陣列會產生單欄value表; 根層級為純字串、數字或布林會被拒絕並回傳明確錯誤。 - 巢狀物件依所選策略攤平。Dot(
user.address.city) 為預設,符合大多數 BI 工具的預期。Bracket(user[address][city])符合 PHP / Rails 的 query string 慣例。Stringify 把巢狀值保留為 JSON 編碼的儲存格——當下游 工具能解析 JSON 儲存格(BigQuery、Snowflake、DuckDB)且你想保留 結構時很有用。 - 物件中的陣列一律 JSON 字串化成單一儲存格——CSV 的扁平行列模型無法 在單欄中原生表達
[1, [2, 3], 4]。 - 輸出預設為不含 BOM 的 UTF-8。Windows 版 Excel 需要 BOM 才會正確 渲染 UTF-8(否則 CJK 字符與 emoji 都會亂碼);若目標受眾用 Excel, 請在選項面板開啟 UTF-8 BOM。
- 當某欄在部分列存在、部分列不存在時,缺漏的儲存格會渲染為
""(兩個引號)。缺失值不是字面字串null——Postgres 的COPY FROM會把未加 引號的空儲存格視為 NULL,這通常是你想要的行為。 - 攤平策略與 Excel 細節的深入探討:JSON 轉 CSV:攤平巢狀資料。輸入無效 JSON 時請先用 JSON Repair。
常見問題
- 為什麼 Excel 打開我的 CSV 變成亂碼?
- Windows 版 Excel 在 CSV 不以 UTF-8 BOM(EF BB BF)開頭時,會假設使用 ANSI / 系統預設編碼。CJK 字符與 emoji 都會變成亂碼。請在選項面板開啟「UTF-8 BOM」後重新匯出;Excel 就會正確渲染。macOS Excel 與 Google Sheets 不需要 BOM。
- 含有逗號、引號或換行的值如何逸出?
- 嚴格依照 RFC 4180:任何含分隔符、雙引號、CR/LF 的儲存格會以雙引號包覆,內部雙引號會加倍(`他說 "嗨"` → `"他說 ""嗨"""`)。不含特殊字元的儲存格直接輸出,不加引號。輸出與所有遵循 RFC 4180 的 CSV parser 相容(2026 年的市場主流幾乎都是)。
- 若 JSON 物件之間的鍵不一致怎麼辦?
- 標頭列是所有觀察到的鍵的聯集,依首次出現順序。缺乏特定鍵的列會把該儲存格渲染為空的引號字串(`""`)。這與 `pandas.json_normalize()` 與 DuckDB 的 `read_json()` 行為一致——稀疏欄位保留,不會被悄悄丟掉。
- 可以用 Tab 當分隔符做成 TSV 嗎?
- 可以——在選項面板把分隔符切到 Tab。輸出技術上是 TSV(RFC 4180 不是為 tab 分隔設計的),因此含實際 tab 字元的儲存格會被加上引號;這不是每個 TSV 消費者期待的,但能通過任何 RFC 4180 風格的 parser 來回。若要正統 TSV(不加引號、cell 內 tab 視為錯誤),先做 JSON → CSV 再 `tr ',' '\t'` 替換。
- 如何讓空儲存格在 Postgres COPY 時被視為 NULL?
- 在輸入 JSON 中讓該鍵直接缺失(omit the key),並選預設攤平策略。輸出對缺漏鍵會發出未加引號的空儲存格,Postgres `COPY FROM` 會視為 NULL。JSON 中顯式的 `null` 會渲染為字面字串 `null`——若想當 NULL 匯入,請先預處理或加引號。
- 為什麼沒有 CSV → JSON 的方向?
- CSV 攜帶的型別資訊不足以無歧義地回轉為有型 JSON。儲存格 `1` 可能是數字、也可能是長度為 1 的字串;`true` 可能是布林、也可能是字串。合理的轉換器必須逐欄詢問你,這就需要表格 UI,等於另做一個工具。不在本轉換器範圍內;具欄位型別推論的 CSV-to-JSON 工具已在 roadmap。
內容審閱者:ShiangYu Huang