CSV 資料轉換

CSV 轉 JSON:保留文字,修正有歧義的資料列

CSV 儲存格不會宣告內容是編號、數字還是日期。本工具將所有值保留為 JSON 字串,遇到結構有歧義就停止,不擅自修復。適合把試算表匯出資料整理成小型、可拋棄的測試資料,不用來驗證真實紀錄。

為什麼所有值都保留為文字

00123 可能是代碼,不是數字 123;true 或 null 也可能刻意寫成文字。空儲存格會變成空字串,不會省略欄位或改為 null。前後空白原樣保留。若 Excel 匯出前已移除前導零,本工具無法復原。

9007199254740993 這類長編號不應先轉成 JavaScript 數字;保持字串可避免在此步驟因數值精度而改變內容。確認接收端 API 契約後,再明確轉型。JSON 轉 TypeScript 可以提供型別草稿,但不驗證資料。

選對分隔符號,完整包住需要引號的欄位

請明確選擇逗號、分號或 Tab,本工具不猜分隔符號。第一筆固定作為欄名;選錯分隔符號有時仍能解析成單欄,因此請確認結果欄數。檔案只支援 1 MiB 以內的 UTF-8;Big5 或 Excel 原生檔請先重新匯出為 UTF-8 CSV。

欄位內若有分隔符號或換行,須以雙引號包住整個欄位;其中的雙引號要連寫兩次:""。支援 LF 與 CRLF,並原樣保留引號內的換行;拒絕單獨 CR,只移除檔案最開頭的 BOM。RFC 4180 描述常見格式,不涵蓋所有 CSV 方言;分號與 Tab 是本工具明確支援的延伸。

修正來源,不接受工具自行猜測

每個欄名都必須非空白且不重複。重複時直接拒絕,不改名,也不合併成陣列。欄名空白會保留,首尾空白另顯示提示。a/b 和 __proto__ 只是字面上的鍵名,不代表建立巢狀物件的指令。

每筆資料欄數必須和欄名列一致。結尾分隔符號代表最後一個空儲存格;少一個分隔符號可能就是缺欄。空白行不會略過:它是一筆只有單一空欄的紀錄,在多欄檔案中會造成欄數錯誤。檔案最後一個換行不會多增加紀錄;只有欄名時輸出 []。

錯誤會指出實際文字行、欄位置(欄位置以 UTF-16 碼元計數),解析資料時另提供待解析的資料筆數。引號內換行會增加文字行號,但不會開始新的一筆資料;欄名錯誤發生在第 1 筆資料之前。錯誤後不提供部分 JSON,請修正來源再轉換。

在本機限制內取得完整結果

轉換在瀏覽器 Worker 執行,5 秒逾時停止。上限為 10,000 筆、200 欄、200,000 個資料儲存格與 8 MiB 輸出。每筆重複的長欄名可能讓 JSON 遠大於 CSV;超限時請分割輸入或縮短欄名。實際速度仍受裝置影響。

結果最多預覽 100 筆,複製與下載一律包含未顯示的完整資料。若瀏覽器拒絕剪貼簿權限,可下載 converted.json,或選取可見文字(僅限預覽部分)。編輯、清除或更換分隔符號會讓舊結果失效。輸入與結果不上傳、不儲存,也不放入網址;只有你按下載時才建立本機檔案,重新整理即清除頁面內資料。

JSON 字串仍可能含有不可信內容。轉換成功不證明身分、資料真偽、HTML 安全或下游執行安全。敏感客戶紀錄應使用組織核准的工具處理。

需要保留原始換行時

貼上時,瀏覽器文字欄位可能將 CRLF 正規化為 LF。需要保留欄位內原始換行格式時,請選擇原始 UTF-8 檔案。

code,note
00123,"逗號, 雙引號 "" 與
換行"

資料可信度

資料來源