什麼是 CSV 轉 JSON 轉換?
CSV(逗號分隔值,RFC 4180)是扁平的表格化文字格式;JSON(JavaScript Object Notation,RFC 8259)是一種用於結構化資料的樹狀文字格式。將 CSV 轉換為 JSON 可把試算表友善的表格變為 API 友善的物件陣列 — 每列對應一個物件,標題列提供鍵名 — 無需逐格重打。
CSV 轉 JSON 轉換是如何運作的?
每次轉換都在你的瀏覽器本機執行。主要步驟如下:
- 你將 CSV 貼入輸入區並按下轉換;工具解析文字並在輸出區產生 JSON 物件陣列。
- 一個逐字元的狀態機(FIELD_START → IN_UNQUOTED_FIELD 或 IN_QUOTED_FIELD)走訪輸入,遵循
""雙引號跳脫,可辨識\r\n與\n兩種列結束符,並先產生一個二維字串陣列作為中介表示。 - 如果第一列標記為標題,其儲存格成為物件鍵名;否則工具產生合成鍵名
field0、field1、… 使每列仍能映射至完整物件。 - 分隔符(逗號、分號、定位字元、管道符或自動偵測)以及型別推斷(數字 / 布林 /
null)皆可設定。推斷開啟時,30成為數字 30,true成為布林;關閉時每個儲存格保持字串。 - 結果以
JSON.stringify格式寫入唯讀文字框,下載連結基於帶 MIME 類型application/json;charset=utf-8的Blob建立,方便一鍵存檔。
為什麼用此工具將 CSV 轉換為 JSON?
- 隱私:每次解析和轉換都在你的瀏覽器中完成,資料絕不傳到我們的伺服器。
- 正確性:CSV 解析器是一個真正的狀態機。含有引號中逗號(
"Bob, Jr.")、嵌入換行符與跳脫引號的欄位會被解析為一個儲存格而非三個 — 樸素的split(',')在這裡都會出錯。 - 型別保真:可選的型別推斷將數字和布林儲存格轉換為真正的 JSON 數字和布林值,讓得到的陣列可直接使用,無需二次清理。
- 彈性:為非逗號 CSV 方言挑選任意分隔符,選擇第一列是否作為標題,並可在每個儲存格都必須維持字串時關閉型別推斷。
CSV 轉 JSON 轉換的常見應用情境有哪些?
在資料工作與工具鏈中,CSV 解析為 JSON 隨處可見:
- API 模擬:貼上一份由試算表匯出的 CSV 樣本資料,轉換為 JSON 陣列,讓本地伺服器當成模擬端點回應。
- 資料匯入:把試算表匯出(聯絡人、庫存、問卷結果)轉換為 JSON 陣列,讓應用或腳本免加 CSV 解析器依賴即可迭代。
- 設定檔編輯:讓非技術評審在試算表中逐儲存格修改設定值或功能旗標,再將儲存的 CSV 轉換為應用實際載入的 JSON。
CSV 轉 JSON 的範例長什麼樣子?
在第一列貼上 name,age,第二列 Alice,30,第三列 "Bob, Jr.",25,然後以逗號分隔符、首列為鍵名、開啟型別推斷按下轉換,得到 [{"name":"Alice","age":30},{"name":"Bob, Jr.","age":25}] — "Bob, Jr." 中帶引號的逗號保留在一個欄位內,年齡變為真正的 JSON 數字。
這個 CSV 轉 JSON 轉換器完全在我的瀏覽器中運作嗎?
是的。每次解析和轉換都會在你的瀏覽器分頁中以 JavaScript 在本機執行。本工具完全不呼叫 fetch、XMLHttpRequest 或 navigator.sendBeacon — 你的 CSV 內容絕不傳到我們的伺服器、第三方轉換服務或任何分析管線。頁面載入完成後也可離線使用,因為它就是個沒有執行期 API 相依的靜態 HTML/CSS/JS 套件。
本轉換器可處理的最大輸入是多大?
轉換器會在記憶體中緩衝整份輸入並於主執行緒同步處理,因此實際上限取決於裝置效能。在現代筆電上,約 10 MB 的 CSV(大約 10 萬筆典型紀錄)可在沒有明顯卡頓的情況下完成轉換。超出此規模 UI 可能會停滯。基於 Web Worker 與分塊解析的串流轉換已列入後續規劃 — 在此之前,請先把超大資料集切分後再貼入。
CSV 轉 JSON 解析器如何處理帶引號的逗號與嵌入換行符?
解析器是一個具有三個狀態(FIELD_START、IN_UNQUOTED_FIELD、IN_QUOTED_FIELD)的逐字元狀態機 — 並非樸素的 split(',')。被雙引號包住的欄位可包含分隔符、CR、LF,或以 "" 跳脫的字面雙引號,這些都不會破壞欄位邊界。所以 "Bob, Jr.",25 會被解析為兩個欄位而非三個;跨列引號的多行描述也會解析成單一儲存格。
數字、布林與空儲存格在 JSON 輸出中如何定型?
定型由 型別推斷 開關決定。推斷開啟(預設)時,看起來像數字的儲存格變為 JSON 數字,true/false 變為布林,字面量 null 變為 JSON null;其餘保持字串。推斷關閉時,每個值都保持字串,不論內容 — 當前導零、電話號碼或識別碼必須完整保留時十分實用。短列中缺少的末尾儲存格以空字串輸出,確保每個物件都有完整的鍵集。
CSV 端支援哪些分隔符?
明確支援四種分隔符:逗號(,,RFC 4180 預設)、分號(;,歐洲常見)、定位字元(\t,TSV 方言)以及管道符(|)。你還可以選擇 自動偵測,它會計算輸入前 4 KB 中各候選分隔符在引號之外出現的次數,挑選最頻繁且能讓前五列得到一致欄位數的那一個。
本 CSV 轉 JSON 轉換器以真正的狀態機解析,輸出乾淨、即用的 JSON,可直接貼入 API 呼叫、腳本或程式碼審查 — 全程不上傳任何位元組。