或拖一個 .json 檔案進來
把 .json 或 .ndjson 拖到這裡,內容會載入下面的方框
JSON 直接貼在這裡,或編輯剛載入的內容
每個月都要做一遍? 在 TableDI 2 裡做一次、存成作業,下個月再跑一次。 免費下載 TableDI 2
不會上傳任何東西。檔案由這個分頁的 JavaScript 讀取,不會離開你的電腦 —— 沒有任何伺服器看得到,關掉分頁資料就沒了。
把 JSON 轉成 CSV
- 貼上或拖進 JSON. 貼上的回應、.json 檔、一行一筆的 NDJSON 都可以。內容不會送到任何地方。
- 確認讀的是哪個陣列. 紀錄包在某個鍵底下時,表格上方會顯示用了哪個鍵 —— data、results、items,看你的 API 怎麼取名。
- 看欄位. 巢狀的值會變成 客戶.名稱 這樣用點連接的欄名;字串清單會用分號併成一格。
- 下載. 給程式或資料庫匯入用 CSV;下一步是用 Excel 打開,就下載 .xlsx。
大多數 JSON 轉不乾淨的三個原因
CSV 是一個長方形:固定的欄、一筆紀錄一列。JSON 是一棵樹。轉檔失敗幾乎都出在下面三件事, 而且在寫出第一列之前就已經決定了。
- 紀錄不在最外層。API 回傳的通常是
{"data": [ … ]}、{"results": [ … ]}或帶分頁資訊的外殼,真正的資料在下一層。把外殼當成一筆紀錄轉,只會得到一列超寬的表。 這一頁會在最外層的鍵裡找第一個「元素是物件」的陣列,並告訴你用了哪一個。 - 值是巢狀的。
{"客戶": {"名稱": "大同", "縣市": "台中"}}必須變成客戶.名稱和客戶.縣市兩欄,而不是一格[object Object]。 中文鍵名原樣保留成欄名。字串清單併成一格;物件清單則加上索引(品項.0.料號),每一個都還找得到。 - 每筆紀錄的欄位不一樣。第三筆多了一個
備註,前兩筆沒有。欄位取所有紀錄的聯集, 依第一次出現的順序排列,缺的值留空 —— 所以不會有值往左擠進錯的欄。
轉好的 CSV 在 Excel 裡變亂碼:先看這一段
這一頁下載的 CSV 是 UTF-8、不帶 BOM。程式、資料庫和 Google 試算表讀它都沒問題; 但在繁體中文版 Windows 上用 Excel 直接雙擊,Excel 會照系統預設的 Big5(CP950)去讀, 中文就會變成一堆怪字。這個工具不會替 CSV 加上 BOM。
兩個避開的方法:
- 要給 Excel 用,就按「下載 .xlsx」。活頁簿裡的文字編碼是寫死的,雙擊永遠正確, 以 0 開頭的電話號碼和統一編號也會以文字保存。
- 一定要 CSV,就在 Excel 用「資料 → 從文字/CSV」匯入,檔案原點選 65001:Unicode (UTF-8)。
已經亂掉的檔案,可以丟進 CSV 亂碼修復 看它被判成哪一種編碼。
NDJSON 也認得
日誌檔、BigQuery 匯出與串流資料常是 NDJSON:一行一個完整的 JSON 值,外面沒有中括號,行與行之間也沒有逗號。 這種檔案整份不是合法的 JSON,嚴格的解析器會整份拒收。這裡在整份解析失敗時,會改成逐行解析, 成功的話表格上方會標示 NDJSON。
JSON 本身有錯的時候
解析錯誤會照解析器的原話顯示,包含位置 —— 尾端多一個逗號、用了單引號、字串裡有沒跳脫的換行。 這比一句「JSON 格式錯誤」有用,因為十次有九次就是這幾種。
這個工具不做的事
- 不加 BOM。如上所述,CSV 一律是沒有 BOM 的 UTF-8。
- 不自動判斷 .json 檔的編碼。拖進來的檔案以 UTF-8 讀取。Big5 存的 JSON 很少見,但遇到了會是亂碼; 請先另存成 UTF-8。
- 一次只轉一個陣列。回應裡有兩個紀錄陣列時,用的是第一個;要另一個,就把那一段單獨貼進來。
- 不轉回巢狀。攤平是單向的;要從表格產生 JSON,用英文版的 CSV to JSON。
每週都要轉同一份匯出時
頭兩三次,一個瀏覽器分頁就夠了。等到同一個介面要定期落到同一張表,而且有人得注意到哪個欄位不見了, 那件事就不再是轉檔。TableDI 2 是一套桌面軟體,專做每期都要重來一遍的表格工作:來源、規則和交付方式存成一個作業,下個月把新檔案放進去再跑一次。全部在你自己的電腦上執行。
常見問題
我的 JSON 最外層是物件,不是陣列,還能轉嗎?
可以。真實的 API 回應通常是 {"data": [ … ]} 或 {"results": [ … ]},紀錄在下一層。轉換器會在最外層的鍵裡找第一個元素是物件的陣列來用,並在表格上方顯示讀的是哪個鍵。完全沒有陣列的話,整個物件當成一筆紀錄,得到一列。
轉出來的 CSV 用 Excel 打開是亂碼,怎麼辦?
因為下載的 CSV 是不帶 BOM 的 UTF-8,而繁中 Windows 版 Excel 雙擊時會當成 Big5 讀。改按「下載 .xlsx」最省事;或在 Excel 用「資料 → 從文字/CSV」匯入並選 65001 (UTF-8)。
巢狀物件會怎麼處理?
變成用點連接的欄名。{"使用者":{"編號":7,"姓名":"王小明"}} 會得到 使用者.編號 與 使用者.姓名 兩欄,深度沒有限制。
紀錄裡的陣列會怎麼處理?
純值的陣列(例如 ["月結30天","北區"])會用分號併成一格,因為那通常是標籤。物件的陣列則在欄名加上索引,品項.0.料號 和 品項.1.料號 是不同的格。
檔案會被上傳嗎?有大小限制嗎?
不會上傳,內容由這個分頁的 JavaScript 讀取。沒有固定的上限,限制是瀏覽器分頁的記憶體;預覽顯示前 200 列,下載包含全部。幾十 MB 的 JSON 在一般筆電上沒問題。
相關頁面
每個月都要做一遍?
在 TableDI 2 裡先做一次,再存成作業。下個月把新檔案放進去再跑一次。
macOS(Apple 晶片與 Intel);Windows 版還在做(在那之前怎麼辦)。免費版不是試用:不用註冊,不用綁卡。
2026-09-11 由 TableDI 團隊最後檢查。這一頁有錯嗎?告訴我們 —— 只有一個收件匣,由做 TableDI 的人自己看。