technine.io

工具

JSON 轉 CSV 工具

在瀏覽器把扁平 JSON 物件、物件陣列、列陣列或物件形式的 JSON Lines 轉成 CSV 或 TSV,欄位及巢狀值處理方式清楚列明。

檔案及貼上的資料只會在此瀏覽器內處理,不會傳送到轉換伺服器、加入網址或寫入瀏覽器儲存空間。

來源資料

將檔案拖到這裏

單一檔案上限為 10 MB,貼上的 UTF-8 文字上限為 1 MB。結果最多可有 100,000 筆記錄、250 欄及 1,000,000 個儲存格;JSON 巢狀結構最多 256 層。預覽顯示 100 行 × 30 欄。

輸入及資料形狀設定
CSV/TSV 輸出

此工具只接受能清楚對應表格的 JSON。例如 [{"id":1,"name":"Ada"},{"id":2,"email":"a@example.com"}] 會按 key 首次出現的次序建立 id、name、email 三欄;某個物件沒有 name 或 email 時,對應位置會留空。巢狀物件及陣列預設不接受,除非你明確選擇把精簡 JSON 文字放入一個儲存格。

使用方法

  1. 選取不超過 10,000,000 bytes 的 JSON 檔案,或貼上最多 1,000,000 UTF-8 bytes。選擇 JSON 或 JSON Lines 解析,再處理語法、混合列或不安全整數錯誤。
  2. 確認輸入屬於支援形狀:一個扁平物件、扁平物件陣列、列陣列,或每個非空白行一個物件的 JSON Lines。頂層純值及物件/陣列混合列會被拒絕。
  3. 選擇 null 及巢狀值的寫法、列陣列是否加入 column_N 標題,以及欄數不一時是否補空值。工具不會截走任何多出的儲存格。
  4. 選擇逗號、Tab、分號或直線分隔符號、UTF-8 BOM,以及 CRLF 或 LF。下載前核對類似公式的值,決定保留原文還是加入單引號,再下載已重新解析驗證的 CSV 或 TSV。

適用情況

以表格查看 API 回應
把扁平物件陣列轉成試算表欄位,後段物件才出現的 key 亦會保留。
為資料匯入建立表格檔案
按目標系統要求,設定分隔符號、換行及 BOM,再輸出 CSV 或 TSV。
轉換物件形式的 JSON Lines
讀取每個非空白行的物件,按 key 首次出現的次序合併成一張表格。
把巢狀值保留成文字
目標系統接受儲存格內的 JSON 文字時,可明確序列化巢狀物件或陣列,避免工具自行壓平。

支援範圍及限制

  • 輸入及輸出限制與另外兩個 CSV 工具相同:檔案 10,000,000 bytes、貼上文字 1,000,000 UTF-8 bytes、100,000 筆記錄、250 欄、1,000,000 個儲存格、單一欄位 1,000,000 個解碼字元,以及 50,000,000 輸出 bytes。預覽最多顯示 100 列及 30 欄。
  • 支援一個扁平物件、扁平物件陣列、列陣列,或每個非空白行一個物件的 JSON Lines。頂層純值、混合列形狀及格式錯誤的 JSON Lines 不會輸出。
  • 巢狀物件及陣列沒有唯一正確的 CSV 形狀,因此預設拒絕。你可選擇把精簡 JSON 放入一個儲存格,但工具不會自動建立多層欄位。
  • 物件缺少的 key 會輸出空欄。null 預設也是空欄,或可選擇輸出文字 null。CSV 轉回 JSON 時,未必能分辨缺少值、null 及空字串。
  • 物件欄位按 key 第一次出現的次序排列。標準 JSON 解析不能可靠保留重複 key,數字的十進制寫法亦可能被正規化。
  • 超出 JavaScript 安全整數範圍而沒有引號的整數會被拒絕,避免解析時改變數字。大型識別編號應在來源 JSON 以字串保存。
  • 類似公式的字串預設保留,在試算表開啟時可能被當成公式。加單引號是選用功能,會改變資料,也不能保證所有試算表都安全。
  • 轉換在此瀏覽器進行,檔案、貼上的 JSON、檔案名稱、key 及輸出不會傳送到轉換伺服器。下載的 CSV 仍可能有私人或類似指令的內容,分享或在其他軟件開啟前應先檢查。

常見問題

哪種 JSON 結構可以轉成 CSV?

工具支援一個扁平物件、扁平物件陣列、列陣列,或每個非空白行一個物件的 JSON Lines。頂層字串、數字、布林值、null,以及物件與陣列混合的列都不接受。

CSV 欄位按甚麼次序產生?

欄位是所有物件 key 的集合,並按每個 key 首次出現的次序排列。後段物件才加入的 key 仍會成為新欄,前面的物件在該位置留空。

巢狀物件及陣列會怎樣處理?

工具預設拒絕,因為巢狀資料沒有唯一正確的壓平方法。你可明確選擇把巢狀值保存成一個儲存格內的精簡 JSON;工具不會自動建立帶點號的欄位。

null、缺少 key 及空字串能否分開保留?

預設不可以。缺少 key 及空字串會輸出空欄,而 null 預設也是空欄;你可改為輸出文字 null。CSV 本身無法保留空白欄位原有的所有 JSON 類型差異。

列陣列可以加入標題嗎?

可以。啟用後會使用 column_N 名稱。工具預設要求每列欄數一致;如選擇補成矩形,短列會補空值,較長的列不會被截短。

為何部分大型 JSON 整數會被拒絕?

JavaScript 無法準確表示所有超出 ±9,007,199,254,740,991 的整數。沒有引號而超出這個範圍的整數會在轉換前被拒絕;如每一位數字都要保留,來源 JSON 應把識別編號寫成字串。

下載的 CSV 可否直接在試算表開啟?

工具會提示以公式字元開頭的欄位,預設仍保留原文。選用單引號前綴會改變數值,在部分軟件可降低風險,但任何設定都不是通用的試算表安全保證。

把 CSV 轉回去,能否得到完全相同的 JSON?

不能。CSV 不保留 JSON 值類型、巢狀結構、物件語意,也未必能區分缺少值、null 及空字串。CSV 應視為表格匯出,而不是 JSON 的無損備份。

諮詢WhatsApp