CSV ⇄ JSON
粘哪一種都行——另一種格式隨打隨出,兩個方向都支援。
怎麼用
- 把 CSV(或 TSV、分號分隔文本)或一段 JSON 陣列粘進輸入框——結果隨打隨出,沒有要點的按鈕。方向按首字元自動判斷,判斷結果顯示在結果面板頭部,可以核對。
- 方向判斷錯了就從下拉里改。整行擠成一列,說明分隔符不對,把「自動」改成具體的分隔符。檔案一開頭就是資料時,關掉「首行為表頭」,輸出會從物件陣列變成二維陣列。
- 複製或下載結果:兩者用的是螢幕上這同一段文本,檔名分別是 data.json 和 data.csv。「填入示例」會按當前方向填入一段對應格式的示例。
示例
輸入(CSV)
訂單號,客戶,備註,郵編,金額 0001,"張, 偉","要求 3 月 11 日送達",100081,1299.00 0002,李娜,,200120,88.50
輸出(JSON)
[ { "訂單號": "0001", "客戶": "張, 偉", "備註": "要求 3 月 11 日送達", "郵編": 100081, "金額": 1299 }, { "訂單號": "0002", "客戶": "李娜", "備註": "", "郵編": 200120, "金額": 88.5 } ]
這份輸出裡有三處值得核對:JSON 的鍵是中文列名,不隨介面語言改變;「張, 偉」裡的英文逗號在引號內,所以留在值裡、沒有劈出第 5 列;「0001」保住了前導零(否則會變成 1),而「1299.00」輸出為 1299——JSON 數字存不住小數末尾的零,要保住原字面請關掉「識別數字與布林值」。
口徑、侷限與已知問題
- 不做檔案上傳、拖放與 URL 抓取:只接受粘進來的文本。拖放區會吃掉結果區需要的高度,而一旦支援檔案就得處理非 UTF-8 編碼——站內的「CSV 檢視器」已經把這件事做完了(GB18030 / Big5 / Windows-1256),在那邊開啟檔案再把文本複製過來即可。
- 輸入上限 1,000,000 個字元;超過 200,000 個字元時,結果會在你停止輸入後才更新並給出提示。超過硬上限會明確報錯,絕不靜默截斷你的輸入。
- 型別識別是逐格、保守的:只把 true / false / null(僅小寫)和嚴格符合 JSON 語法的數字轉成原生值。帶前導零的整數(00501)與 16 位及以上的長整數(長 ID)一律保持字串,空單元格保持 "" 而不是變成 null。
- JSON 數字存不住小數末尾的零,所以 89.90 會變成 89.9、42.00 會變成 42。要逐字保住原值,請關掉「識別數字與布林值」。
- 列數取全文最寬的一行,所以任何欄位都不會被丟:短行右側補空字串,多出來的欄位自動命名。欄位數與首行不一致的行會按行號列出來。
- 列名重複時會加 _2、_3 字尾而不是互相覆蓋——覆蓋會讓一整列靜默消失。列名為空或缺失時會命名為 column_N。這些名字是機器可讀記號,在三種介面語言下完全一致。
- JSON → CSV 接受物件陣列(主路徑)、二維陣列(按位置出列)、單個物件、原始值陣列(單列 value)。其它形狀——頂層是標量,或者數組裡物件與其它值混雜——一律報出所在行列,不做猜測。
- 巢狀物件預設按點號路徑扁平化(地址.區);陣列不扁平化,會寫成單元格內的緊湊 JSON。關掉扁平化,巢狀物件也會寫成單元格內 JSON。null 寫成空單元格。
- JSON 按嚴格語法解析:不允許註解、尾隨逗號、單引號、未轉義控制字元,巢狀上限 64 層。每行一個物件的 JSONL 不受支援——請先把它們包進一個數組。
- CSV 一側是寬容的:引號沒閉合會取到文末並點名行號,空行跳過並計數,欄位數不符的行會被列出。只有 JSON 一側才會產生硬錯誤。
- 輸出的 CSV 用 CRLF 行結束符、不帶 BOM,與你複製到的文本完全一致。若 Excel 雙擊開啟含中文的 CSV 出現亂碼,請用「資料 → 從文本/CSV 匯入」並選擇 UTF-8。
- 不做的事:.xlsx、壓縮檔、多檔案、JSONL、YAML/XML/SQL/Excel 匯出、排序、篩選、選列、去重——這些分別由「CSV 檢視器」和「配置格式互轉」承擔。全程不上傳、不儲存、不寫入 URL。
相關工具
資料換好格式之後,通常還需要這些。