JSON 轉 CSV 轉換器

線上把 JSON 轉成 CSV:免費、即時、私密。檔案在你的瀏覽器裡處理,不上傳伺服器。

CSV 分隔符
結果

轉換後的檔案和預覽會顯示在這裡。

已準備好。選擇一個表格檔開始轉換。

轉換原理

  • 物件陣列會轉成列和欄;巢狀物件會攤平成點號欄,例如 address.city。
  • 依資料選擇分隔符號——逗號、分號或 Tab。

表格檔會在你的瀏覽器本機轉換,不會上傳到 BroBroGo。

常見問題

JSON 怎麼轉成 CSV?

拖入 JSON 檔案,點擊轉換,幾秒就能下載 CSV 檔案,還附結果預覽,全程在本機完成。

檔案最大能轉多大?

單個檔案最多 8 MB、10,000 列、200 欄。資料更大時,建議先拆成小檔案。

JSON 轉 CSV:扁平化巢狀結構到純表格的關鍵轉換

JSON 與 CSV 是兩種在本質上完全不同的資料格式。JSON 支援巢狀物件、陣列、數字、布林值與 null,而 CSV 只是一個純文字的二維表格,不具備型別、巢狀或分頁概念。本站的 JSON 轉 CSV 工具所做的,就是將這種階層式、具型別的資料「壓平」成一個無型別的平面表格。所有的處理都在你的瀏覽器中執行,沒有任何資料被上傳到伺服器。

扁平化機制:Dot-Path 標記法與陣列展開

當你上傳一個符合「表格形狀」的 JSON 檔案時(這點稍後說明),轉換器會自動選用最常見的扁平化策略:以點路徑(dot-path notation)表示巢狀物件的鍵名。例如,一個包含 address 物件的 JSON 物件:

{
  "name": "王小明",
  "address": {
    "city": "台北市",
    "zip": "100"
  }
}

在 CSV 中會變成兩欄:nameaddress.cityaddress.zip。每個物件變成一個列,物件鍵變成欄位名稱,巢狀層級用句點串接。若 JSON 是陣列的陣列(array of arrays),則每個內部陣列直接成為一列,元素依序填入欄位,不會產生物件鍵。

這種扁平化會永久破壞巢狀結構:你無法從 CSV 還原原始的 JSON 物件層次。所有原本的型別(數字、布林值、null)都會被轉成字串。例如布林值 true 變成字串 "true",數字 123 變成 "123"null 變成空值或字串 "null"(取決於 CSV 工具後續的解讀)。更常見的困擾是前導零的遺失:"001" 若被辨識為數字在 JSON 中就是 1,但 CSV 中的 001 會被多數試算表軟體自動去掉前導零,變成 1

輸入格式限制:JSON 必須是「表格形狀」

此工具不接受任意結構的 JSON。它只處理兩種形狀的資料:

  • 單一陣列的物件[{"a": 1}, {"a": 2}]
  • 陣列的陣列[,]

若 JSON 是單一物件({"a": 1})、巢狀混合結構、或不合法的 JSON 語法,工具會顯示錯誤訊息:「This JSON is invalid or not table‑shaped.」。這是因為 CSV 只能表達平坦的二維表格,沒有欄位層級概念。如果你需要轉換非表格形狀的 JSON,必須先在來源端進行扁平化或正規化。

分隔符號、引號規則與 CSV 輸出設定

CSV 的「C」代表逗號,但實際上分隔符可以自訂。本工具提供三種選項:逗號(,)、分號(;)或定位點(Tab)。選擇分號常見於歐洲語系區域,因為逗號常被用作小數點。定位點則適合欄位內容可能包含逗號或分號的資料。

由於 CSV 沒有跳脫字元的通用標準,工具會自動為包含分隔符號、雙引號或換行符號的值加上雙引號,並將值內的雙引號重複為兩個雙引號("")。例如值 "他說"你好" 會變成 "他說""你好""。這符合 RFC 4180 規範,但若下游軟體不使用此標準,可能造成欄位錯位。

轉換完成後,頁面會顯示一個預覽表格、列數與欄數,以及產出檔案的大小。你可以在下載前確認資料是否正確。

邊界案例與錯誤處理

工具設有明確的限制與對應的錯誤訊息:

情況 錯誤訊息
未選取檔案 Choose one file first.
非支援格式(CSV/JSON/XLSX,此頁僅 JSON 相關) Choose a CSV, JSON or XLSX file.
輸出格式選錯(例如選到 XLSX) Choose a different output format.
JSON 解析失敗或非表格形狀 This JSON is invalid or not table‑shaped.
檔案超過大小上限 This file is too large. Use a file under ‹max›.(‹max› 為實際上限值)
表格超過最大列數 This table has more than ‹max› rows.
表格超過最大欄數 This table has more than ‹max› columns.
轉換過程被使用者取消 Conversion cancelled.
轉換超過預期時間 This conversion is taking too long. Try a smaller file.
無法轉換(其他內部錯誤) Could not convert this file.

所有處理都在客戶端完成,因此即使檔案包含敏感資訊(如 API 金鑰、個人資料),也不需擔心資料外洩。

誰需要這個工具

  • API 回應處理者:許多 Web API 回傳 JSON 格式資料,但分析人員需要 CSV 才能匯入 Excel、Google Sheets 或資料庫。此工具能快速將 [{...}, {...}] 陣列轉成可匯入的 CSV。
  • 重視隱私的工作流程:若你無法將資料上傳到第三方服務,這款完全離線的轉換器是安全選擇。
  • 跨語言環境工作者:需要產生分號分隔的 CSV 以符合歐洲本地化設定時,可直接指定分隔符。
  • 快速原型開發者:在資料管線中臨時需要將 JSON 試算化,不用寫 Python 或 jq 指令,拖放即可。

常見陷阱與注意事項

  1. Type round‑trip 不可能:CSV → JSON 轉換無法還原原始型別。從 CSV 再轉回 JSON 時,所有值都會是字串,數字 100 會變成 "100",需要手動修正。
  2. 巢狀結構的保留決策:如果你需要保留完整巢狀結構,此工具不適合。你必須在轉換前決定如何扁平化(例如使用點路徑、陣列索引、或合併為 JSON 字串欄位)。預設點路徑是一般通用的折衷方案。
  3. 前導零遺失:若 JSON 中的數字是 "001"(字串),則 CSV 中仍為 001;若 JSON 中的數字是 1,CSV 中為 1。但 Excel 打開 CSV 時可能會將 001(文字)自動轉為數值 1,這是下游軟體的行為,不在本工具控制範圍內。
  4. 換行符號在欄位中:若某個 JSON 字串值包含 \n,CSV 會正確引用並保留換行,但某些老舊 CSV 解析器可能無法處理跨列的值。

常見問題 FAQ

Q: JSON 內有多個陣列(例如兩個獨立的陣列物件),可以一次轉換嗎? A: 不行。工具僅接受單一陣列(array of objects 或 array of arrays)。若有多個頂層陣列,請先合併為一個,或分批處理。

Q: 為什麼我的數字「001」變成「1」? A: 這是兩個層面的問題。若 JSON 中的 "001" 是字串(用雙引號包裹),CSV 會保留它;若 JSON 中是數值 1(無引號),則 CSV 輸出為 1。但即使 CSV 正確輸出 "001",Excel 或 Google Sheets 打開時仍可能自動捨去前導零,這屬於試算表軟體的資料類型推斷行為。建議在試算表中手動將該欄格式設為「文字」。

Q: 可以用 pipe (|) 或自訂分隔符號嗎? A: 目前工具僅支援逗號、分號與定位點三種選項,無法使用自訂分隔符。

Q: CSV 中巢狀欄位名稱太長(如 data.results.info.title),可以簡化嗎? A: 工具採用自動點路徑扁平化,無法由使用者自訂欄位命名規則。如有需要,請在轉換前修改 JSON 的鍵名(例如將巢狀鍵提前展開)。

Q: 轉換非常慢,怎麼辦? A: 提示「This conversion is taking too long. Try a smaller file.」表示檔案過大或結構過於複雜。請減少 JSON 中的物件數量或巢狀深度。此工具為瀏覽器端處理,效能取決於你的裝置。

Q: JSON 中包含 null 值會怎麼處理? A: null 會被轉為空字串(CSV 中連續兩個分隔符號表示空值),不會寫入文字 "null"。如果希望明確寫出 "null",需要先在 JSON 中將值改為字串 "null"