§

貼上你想轉換為 JSON 的 CSV。

分隔符
首列作為標題
型別推斷
§

Output

json

在台灣的資料工程現場,CSV 轉 JSON 幾乎天天上演:data.gov.tw 上的政府開放資料、行政院主計總處(DGBAS)發布的人力資源月報與物價指數時序,大多以 CSV 形式批次下載,再由 ETL 改寫成 JSON 送進 BigQuery 或 Snowflake;證交所(TWSE)與櫃買中心(TPEx)的盤後資訊、上市櫃公司公開資訊觀測站匯出資料也是 CSV 為主,常被金融科技團隊轉為 JSON 灌入 Kafka;中央銀行的匯率與利率時序、財政部電子發票 API 摘錄同樣以 CSV 發布。涉及個資法(PDPA)與金管會稽核時,敏感資料更需在本機完成欄位映射。本工具於瀏覽器內完成轉換,財務、健保與戶政相關資料絕不離開使用者裝置。

什麼是 CSV 轉 JSON 轉換?

CSV(逗號分隔值,RFC 4180)是扁平的表格化文字格式;JSON(JavaScript Object Notation,RFC 8259)是一種用於結構化資料的樹狀文字格式。將 CSV 轉換為 JSON 可把試算表友善的表格變為 API 友善的物件陣列 — 每列對應一個物件,標題列提供鍵名 — 無需逐格重打。

CSV 轉 JSON 轉換是如何運作的?

每次轉換都在你的瀏覽器本機執行。主要步驟如下:

  1. 你將 CSV 貼入輸入區並按下轉換;工具解析文字並在輸出區產生 JSON 物件陣列。
  2. 一個逐字元的狀態機(FIELD_START → IN_UNQUOTED_FIELD 或 IN_QUOTED_FIELD)走訪輸入,遵循 "" 雙引號跳脫,可辨識 \r\n\n 兩種列結束符,並先產生一個二維字串陣列作為中介表示。
  3. 如果第一列標記為標題,其儲存格成為物件鍵名;否則工具產生合成鍵名 field0field1、… 使每列仍能映射至完整物件。
  4. 分隔符(逗號、分號、定位字元、管道符或自動偵測)以及型別推斷(數字 / 布林 / null)皆可設定。推斷開啟時,30 成為數字 30,true 成為布林;關閉時每個儲存格保持字串。
  5. 結果以 JSON.stringify 格式寫入唯讀文字框,下載連結基於帶 MIME 類型 application/json;charset=utf-8Blob 建立,方便一鍵存檔。

為什麼用此工具將 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 在本機執行。本工具完全不呼叫 fetchXMLHttpRequestnavigator.sendBeacon — 你的 CSV 內容絕不傳到我們的伺服器、第三方轉換服務或任何分析管線。頁面載入完成後也可離線使用,因為它就是個沒有執行期 API 相依的靜態 HTML/CSS/JS 套件。

本轉換器可處理的最大輸入是多大?

轉換器會在記憶體中緩衝整份輸入並於主執行緒同步處理,因此實際上限取決於裝置效能。在現代筆電上,約 10 MB 的 CSV(大約 10 萬筆典型紀錄)可在沒有明顯卡頓的情況下完成轉換。超出此規模 UI 可能會停滯。基於 Web Worker 與分塊解析的串流轉換已列入後續規劃 — 在此之前,請先把超大資料集切分後再貼入。

CSV 轉 JSON 解析器如何處理帶引號的逗號與嵌入換行符?

解析器是一個具有三個狀態(FIELD_STARTIN_UNQUOTED_FIELDIN_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 呼叫、腳本或程式碼審查 — 全程不上傳任何位元組。