跳至主要內容
Lizely

從 JSON 轉換為 CSV

將一個非空的 JSON 物件陣列,以預設的電子表格公式保護方式,轉換為 RFC 4180 風格的 CSV,並在本機執行。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.貼入一個非空的 JSON 陣列,且每行皆為物件,並確認其內容符合可視範圍限制。
  2. 2.轉換記錄後,請檢視欄位順序、巢狀 JSON 細胞、引號使用以及任何報告的公式風險字首。
  3. 3.下載 converted.csv,並在接收應用程式中選擇 UTF-8 逗號分隔匯入設定。

關於從 JSON 轉換為 CSV

JSON 到 CSV 轉換器可將非空的 JSON 物件陣列轉換為可下載的逗號分隔檔案,並在當前瀏覽器中執行。請貼上類似 [{"name":"Alice","age":30},{"name":"Bob","age":31}] 的紀錄,轉換後可檢視精確的 CSV 文字,並下載轉換後的 converted.csv。JSON 的輸入、解析後的紀錄、CSV 的輸出以及下載功能皆為本分頁的本機狀態,不會上傳至 Lizely。

支援的頂層結構刻意保持狹窄:一個包含一個或更多 JSON 物件的陣列。若為頂層物件、原始值、空陣列、null 檔、陣列行、或原始值行,將被拒絕並顯示特定訊息。欄位透過掃描解析後的記錄,從第一筆到最後一筆,首次出現的欄位會被加入。後續記錄可新增欄位。缺失的欄位與明確的 null 值會變成空的 CSV 區域。false、true、零以及其他 JSON 原始值將維持其常見文字形式。

巢狀物件與陣列不會被展開為點分欄位。它們會被序列化為一個單元格內的緊縮JSON格式。CSV引號則會保護JSON雙引號與逗號。這避免了發明可能與實際欄位名稱衝突或遺失陣列結構的展開規則。同時也意味著消費者若需再次使用巢狀結構,必須將該單元格解析為JSON。緊縮巢狀文字內的物件屬性順序則遵循解析後JavaScript物件的列舉行為。

輸出遵循常見的 RFC 4180 欄位規則。欄位以逗號分隔,記錄以 CRLF 分隔。包含逗號、雙引號、歸位字元或換行的欄位將被雙引號包圍。雙引號內的雙引號將被複製一次。空值將維持為空欄。此轉換器不會移除首尾空白、加入 UTF-8 BOM、推斷日期、本地化數值、或根據瀏覽器設定改變分隔符。這些選擇確保輸出的結果可預測且可見。

電子表格公式注入由一項持續啟用的安全策略處理。以 =、+、-、tab、換行、或公式觸發字元開頭的欄位名稱與 JSON 字串值,若在 ECMAScript 空白字元後出現,包括前導 BOM 或不換行空格,會在 CSV 轉義前加上一個開頭單引號。電子表格程式通常將這個單引號視為文字請求。此緩衝措施故意改變這些文字值,結果總結會報告有多少個儲存格被加上字首。JSON 數值為輸入資料而非攻擊者控制的公式字串,因此像 -JSON 這樣的 42 數值會保持為 -42。

公式保護減輕了常見風險,但並非所有電子表格軟體、匯入設定、地區或下游轉換流程的普遍安全保證。後續應用程式可能移除單引號、重新解釋文字,或使用不同的觸發規則。請在以能執行公式、命令、連結或外部資料連線的軟體中開啟前,審查不可信的匯出內容。本工具不提供關閉預設保護的選項,因為其常見下載路徑應預設安全。

限制明確且從未以靜默上限實作。輸入內容最多可含 1,000,000 JavaScript 字元。陣列最多含 10,000 行,發現的模式最多含 200 欄位,產生的 CSV 最多含 5,000,000 字元。任何邊界被逾越將返回錯誤且不會產生縮短的 CSV。文字區域會持續顯示逾限輸入並在計數器中標示,而非在輸入時自動截斷。

編輯 JSON 會清除先前的 CSV、錯誤與下載 URL。再次轉換會撤銷較舊的下載,並在建立新的 Blob URL 前完成。轉換錯誤不會留下過時的成功狀態,離開頁面會釋放剩餘的 URL。可下載的 MIME 型別為 text/csv,並使用 UTF-8 字符集。預覽包含與 Blob 內相同完整的字串,因此在儲存前可以檢查引號、公式字首、欄位順序與巢狀 JSON。

此轉換器適用於受控資料交換、開發者測試資料、小型匯出與電子表格準備。在來源可能不完整時,請先驗證 JSON,並檢查接收應用程式之匯入選項。CSV 不包含資料型別、巢狀模式、檔案內的字元編碼宣告或通用語法標記。若資料型別與結構重要,請保留原始 JSON,並使用支援模式的流程進行生產遷移或受管制資料處理。

方法與來源

瀏覽器會解析一個非空的JSON物件陣列,依首次遇見順序偵測最多至200欄位,在缺失或空值情況下將其轉為空欄位,並以緊湊格式將巢狀陣列或物件序列化為JSON。危險的字串單元與標題皆會在RFC 4180轉義前加上永久的引號。包含逗號、引號、換行(CR)或段落結束(LF)的欄位將被雙引號包覆,內部引號再做雙重處理;各筆資料以CRLF連結。明確設定的輸入、行、欄位與輸出限制若無部分CSV將無法成功,每項成功轉換皆會產生可取代的本機Blob URL。

常見問題

支援哪一種 JSON 形狀?
僅支援非空的頂層物件陣列。原始值行、陣列行、null 行以及其他頂層結構皆被拒絕。
欄位如何排序?
記錄將依序掃描,每當一個欄位首次在解析的物件中出現時,就會被加入。
巢狀的物件與陣列會如何處理?
它們將被序列化為緊湊的 JSON,並放入單一 CSV 細胞中,然後依照 CSV 規則進行引號包圍。
為何某些字串細胞會加上單引號?
為防止公式注入,危險的字串值與標題會加上單引號字首,此變更為有意設計,且會顯示相關數量。
會上傳資料嗎?
目前這個瀏覽器分頁會處理編號 JSON 的解析、結構發現、CSV 的轉義、預覽以及 Blob 下載的建立。

開發者工具 使用指南

查看全部