CSV轉JSON轉換器
將CSV檔案轉換為JSON陣列(物件陣列)。可指定分隔符和是否將首行作為標題行,轉換結果支援複製和下載。所有處理均在瀏覽器內完成,不會發送到伺服器。
| 分隔符 |
|
|---|---|
| 將首行作為標題行 | |
| 格式化顯示(帶縮排) |
輸入CSV後,轉換結果將顯示在此處。
CSV行與JSON物件的對應關係
| CSV的一行 | name,age,city |
|---|---|
| 轉換後的JSON物件 | {"name": "...", "age": "...", "city": "..."} |
將首行作為標題行時,第二行起的每一行都會轉換為以標題列名為鍵的一個物件。
CSV→JSON 轉換是什麼
CSV→JSON 轉換,是指將以逗號分隔的 CSV 資料,轉換成程式易於處理的 JSON 陣列(物件的陣列)的處理。由於是以符合 RFC 4180 的剖析器讀取,可對應以雙引號括住的儲存格內的逗號、換行與經跳脫的引號(""),因此以 Excel 等輸出的複雜 CSV 也能不走樣地轉換。
轉換時會將第一列視為標題列,第二列以後的各列則轉換成「標題名稱: 值」形式的物件。處理全部在瀏覽器內的 JavaScript 完成,所輸入的 CSV 內容不會傳送至伺服器。
CSV→JSON 轉換的使用方式
- 輸入 CSV 在文字區域貼上 CSV 或直接輸入。手邊沒有資料時,可用範例按鈕載入示例。
- 選擇分隔字元 在分隔字元設定中選擇資料使用的是逗號還是定位字元。若為 TSV 檔案請選擇定位字元。
- 設定標題列的處理 啟用「以首列為標題」後,第一列的值便會作為 JSON 物件的鍵名使用。
- 選擇顯示形式 切換縮排顯示,可在易讀的附縮排 JSON 與緊湊的 JSON 之間選擇。
- 複製結果 轉換後的 JSON 會自動顯示於畫面。可用複製按鈕放入剪貼簿,直接使用。
用好本工具的小技巧
- 啟用"將首行作為標題行"後,首行的值將作為JSON物件的鍵名。關閉後則使用col1、col2…這樣的連續編號鍵。
- 如果標題中存在空白或重複的列名,該列會自動替換為col{列號}這樣的鍵,以避免數值丟失。
- 與姐妹工具"JSON轉CSV"搭配使用,可以在CSV和JSON之間反覆相互轉換。
- 轉換採用符合RFC 4180標準的解析器,能正確處理引號內單元格中的逗號、換行以及轉義引號(""),因此Excel等匯出的複雜CSV也能正確轉換。
CSV→JSON 轉換的活用場景
建立 API 測試用資料
可將由試算表匯出的 CSV,迅速轉換成確認 API 運作所用的 JSON 負載。
準備投入 NoSQL 資料庫的資料
MongoDB 這類文件導向資料庫處理 JSON 格式的資料,因此可將試算表軟體做成的清單直接轉換為投入用資料。
建立前端的模擬資料
可由 Excel 做成的清單,迅速備妥畫面暫用顯示與測試所需的 JSON 陣列。
不寫腳本的一次性資料轉換
對於不值得當場撰寫轉換程式碼、僅此一次的小規模 CSV→JSON 轉換,也能輕鬆使用。
用語集
- CSV
- Comma-Separated Values 的縮寫,指以逗號分隔值來表示表格形式資料的格式。廣泛用於試算表軟體的讀寫。
- JSON
- JavaScript Object Notation 的縮寫,指以鍵與值的組合為核心表示資料的輕量格式。多數程式語言與 API 皆以標準方式處理。
- TSV
- Tab-Separated Values 的縮寫,指以定位字元分隔值來表示表格形式資料的格式。特點是即使值中含有逗號,分隔也不易變得曖昧。
- RFC 4180
- 指訂定 CSV 檔案一般書寫格式的規格。其中規範了以雙引號括住的儲存格內的逗號、換行與引號的處理方式等。
- 標題列
- 指置於 CSV 第一列、表示各欄名稱的列。轉換成 JSON 時,此列的值會作為物件的鍵名使用。
- 跳脫
- 指想在 CSV 中將雙引號本身作為值時,以兩個引號重疊("")來表示的處理。剖析器會將其還原為一個雙引號。
常見問題
閒話 ― 為什麼API更青睞JSON而非CSV
CSV能夠簡單地表示表格資料,但無法表示陣列、巢狀物件等巢狀結構。大多數REST API的響應採用JSON格式,正是因為單條記錄內可以自由嵌入陣列和物件,從而能夠原樣傳輸CSV無法表達的複雜資料結構。
另一方面,CSV也有難以捨棄的優點:"能用Excel或表格軟體立即開啟""一行對應一條記錄,人眼易於核對"。在實際業務中,"彙總核對用CSV、系統間對接用JSON"的分工已經固定下來,這也是像本工具這樣的相互轉換需求長期存在的原因。
儘管名為JSON(JavaScript Object Notation),如今幾乎所有語言都將其作為標準資料格式支援,而不僅限於JavaScript。自2001年Douglas Crockford釋出該規範以來,它被有意設計為一種與具體語言無關的最小化資料表示方式,這正是其廣泛普及的重要原因之一。