CSV 轉 JSON
CSV 與 JSON 雙向互轉:自動偵測分隔符號、標題列、數字轉型,大整數與 007 不失真,支援開檔與下載。免費免註冊,資料不上傳。
- 雙向互轉
- 自動偵測分隔
- 大整數不失真
- Excel 不亂碼
資料只在你的瀏覽器裡轉換,不會上傳也不會儲存。
🔒 所有計算都在你的瀏覽器內完成,資料不會上傳到任何伺服器。
什麼時候會用到
- Excel 資料給工程師:把 Excel 另存的 CSV 轉成 JSON,直接用在網頁或 API。
- API 結果轉報表:把 API 回傳的 JSON 陣列轉成 CSV,用 Excel 或 Google 試算表分析。
- 匯入系統前檢查:確認欄位與分隔符號,避免 007、電話號碼前面的 0 被吃掉。
- 試算表直接貼上:從試算表複製的儲存格是 Tab 分隔,貼上後會自動偵測轉換。
使用說明
- 選擇轉換方向(CSV → JSON 或 JSON → CSV),把資料貼到「輸入」框,或按「開啟檔案」載入 .csv、.tsv、.json 檔,結果會即時出現在「輸出」框。
- 依資料調整選項:分隔符號可自動偵測或手動指定;「首列為標題」決定 CSV 第一列是欄位名稱;「自動轉型」會把數字與 true/false 轉成 JSON 的數字和布林值。
- 按「複製」或「下載」取得結果;要用 Excel 開 CSV 時保留「加 BOM」,中文才不會變亂碼。按「交換」可把輸出當成輸入、反向轉回去檢查。
實際範例
CSV → JSON(勾選首列為標題與自動轉型):輸入標題 id,name,price,active,以及 9007199254740993,Amy,1200.50,true 和 007,Ben,300,false 兩列,結果是 2 列 × 4 欄。300 轉成數字、true 和 false 轉成布林值;但 9007199254740993 超過安全整數範圍、007 有前導零、1200.50 有尾端的 0,三者都保留成字串,轉回 CSV 時一字不差。
JSON → CSV:輸入 [{"name":"Amy","tags":["a","b"]},{"name":"Ben","email":"ben@example.com"}],欄位取兩筆的聯集 name、tags、email,得到 2 列 × 3 欄。Amy 沒有 email、Ben 沒有 tags,對應的格子留空;tags 陣列轉成 JSON 字串,因為含逗號和引號,CSV 裡寫成 "[""a"",""b""]"。
結果怎麼看
- 狀態列的「列 × 欄」算的是資料列,不含標題列;CSV 裡的空白行會略過,不算一列。
- 出現「欄位數與標題不符」時,代表某些列比標題多或少了欄位,最常見的原因是內容含逗號卻沒用引號包起來。欄位不足的列會缺少後面的 key,多出來的值放在 __parsed_extra。
- 沒勾「自動轉型」時,JSON 裡所有值都是字串;勾了也只轉數字與 true/false,空白格維持空字串,日期不會轉換。
- 標題有重複名稱時,第二個以後會自動改名,例如兩個 a 會變成 a 與 a_1,避免後面的欄位蓋掉前面的值。
原理與計算方法
- CSV 的解析與輸出採用 papaparse,引號規則依 RFC 4180:含分隔符號、引號或換行的欄位用雙引號包住,內容裡的雙引號寫成兩個;輸出的換行是 CRLF。
- 自動偵測分隔符號時,會在逗號、Tab、直線、分號之間挑出各列欄位數最一致的一種;只有一欄時無從判斷,就當成逗號。
- 自動轉型的規則:值轉成數字後再轉回文字,必須與原文完全相同,而且整數要在 ±(2^53−1) 的安全範圍內,才會轉成數字。
- JSON → CSV:物件陣列以所有物件的 key 聯集(依第一次出現的順序)作為欄位;二維陣列直接逐列輸出;純值陣列放在 value 欄。超過安全範圍的整數會先保留原始文字再解析,所以輸出不會失真。
- 開啟檔案時先用 UTF-8 解碼,若不是合法的 UTF-8 就改用 Big5,對應舊版 Excel 匯出的繁體中文檔案。
適用限制
- 只處理平面表格,巢狀 JSON 不會展開成多欄(例如 user.name),而是整個物件轉成 JSON 字串放在一格。
- 分隔符號的自動偵測要靠各列欄數一致,資料很少或欄數參差時可能判斷錯,這時請手動選擇分隔符號。
- 檔案編碼只自動辨識 UTF-8 與 Big5,簡體 GBK、日文 Shift_JIS 等檔案請先另存成 UTF-8。
- 整份資料在瀏覽器記憶體中處理,數十 MB 以上的檔案可能讓頁面變慢。
常見問題
為什麼 007、1.50 沒有被轉成數字?
勾選「自動轉型」後,只有轉成數字再轉回文字還和原文一模一樣的值才會轉。007 會變成 7、1.50 會變成 1.5,代碼或金額格式就跑掉了,所以保留成字串,確保再轉回 CSV 時內容不變。
用 Excel 開下載的 CSV,中文變亂碼怎麼辦?
勾選「下載 CSV 加 BOM」再下載。BOM 是檔案開頭的隱形標記,Excel 看到它才會用 UTF-8 讀檔。反過來,若開啟的 CSV 檔不是 UTF-8(例如舊版 Excel 存的 Big5 檔),本工具會自動改用 Big5 解碼。
JSON 裡有巢狀物件或陣列,轉成 CSV 會怎樣?
CSV 是平面表格,巢狀的物件或陣列會整個轉成 JSON 字串放進同一格,例如 ["a","b"]。各筆物件的欄位不同時,會取所有欄位的聯集,缺的格子留空。
我的資料會被上傳嗎?
不會。解析與轉換都在你的瀏覽器裡完成,資料不會傳到伺服器,也不會存在瀏覽器裡,關掉頁面就消失,可以放心處理客戶名單或內部報表。
怎麼把 Excel 轉成 JSON?
在 Excel 選「另存新檔 → CSV UTF-8」後用「開啟檔案」載入,或直接選取儲存格複製貼上,轉換方向選 CSV → JSON 即可。
Google 試算表可以直接用嗎?
可以。選取範圍複製後直接貼上(Tab 分隔會自動偵測),或從「檔案 → 下載 → 逗號分隔值」下載 CSV 後開啟。
轉出來的 JSON 長什麼樣子?
勾選「首列為標題」時,每一列會變成一個物件、key 是欄位名稱,整份是物件陣列;取消勾選則每一列變成一個陣列。