繁體中文

資料與電子表格 · CSV 更清理

CSV 與 JSON:兩種資料格式及其背後結構的想法

· 背景

csv json 資料格式

分支 JSON 物件旁的平面行列網格,其巢狀分支無法直接容納
原始 ToolAcre 向量圖

CSV 描述一個表格; JSON 描述一棵樹。這篇文章解釋了 JSON 來自哪裡,為什麼它帶有 CSV 不能的類型和嵌套,以及每次資料在兩者之間移動時不匹配意味著什麼。

相同的客戶清單看起來與 CSV 和 JSON 完全不同 - 為什麼每種格式編碼不同的結構概念

客戶表在 CSV 中看起來很緊湊,因為每一行都藉用了一個共享標頭的意思。 JSON 在每個物件中重複屬性名稱,並可以在客戶下方嵌套位址或清單。因此,即使兩個檔案的可見事實重疊,它們也表達了不同的結構能力。

ToolAcre 轉換常見的交集:平面標題加上資料行成為平面物件的頂級陣列。它不會將標題中的標點符號轉換為分支或從重複的列推斷數組。了解這一邊界可以防止平面轉換器被誤認為是資料模型設計者。

CSV 作為網格 — 行和列、位置意義,除了文字之外沒有任何內容

在此實作中,CSV 是一個矩形字串表。第一行提供標題名稱,後面的每個儲存格從其列位置接收意義。短行被填充,長行被警告,因為只有當行寬與標題一致時,位置才能可靠地工作。

沒有本機數字、布林值、物件或空白儲存格。引號保護語法,但不分配類型。數字序列和單字 true 仍然是文字值,這可以保持標識符穩定,並要求消費者在實際存在的地方應用模式。

在 ToolAcre 中,CSV 儲存格是位於一個標題行下的字串

此工作簿要求提供 JSON 2000 年代初期的起源和標準歷史,但此儲存庫不是這些日期或出版物的來源。可驗證的行為是瀏覽器使用 `JSON.parse` 和 `JSON.stringify`,接受頂級物件陣列以轉換為表格。

無效 JSON 收到特定解析錯誤,非陣列根被拒絕,且不支援包含基元的陣列。對於訪客來說,這些執行時邊界比未引用的年表更重要。歷史背景應該來自該任務源集之外的主要標準。

JSON 標準歷史記錄位於儲存庫證據之外;支援的執行時間形狀是可驗證的

JSON 物件在其值旁邊攜帶每個鍵,而 CSV 單元依賴於相同索引處的標頭。 ToolAcre 計算一次消除歧義的按鍵,然後按位置對應每一行。缺少表示的單元格變成空字串,因此物件共享穩定的鍵集。

此自我描述具有大小和重複成本,但使每個 JSON 記錄無需單獨定位標頭即可理解。相反,在沒有標題的情況下更改 CSV 列順序會破壞其意義。轉換必須使整個表格中的姓名和職位保持配對。

樹與表 — 巢狀、陣列和選用鍵,以及為什麼它們在一行中沒有自然的位置

JSON 值可以包含物件和數組,而一個 CSV 單元本身不能分支。在相反的方向上,ToolAcre 使用 `JSON.stringify` 序列化巢狀值,並將該 JSON 文字放置在一個單元格中。它不會建立 address_city 列或其他標記行。

跨 JSON 記錄的可選鍵成為按首次看到的順序排列的列的並集,在物件缺少鍵的情況下為空白。對於稀疏的扁平物體來說,這是一種可防禦的扁平化。它不為任意樹提供自然映射,而且路線是這麼說的而不是猜測。

工作範例 — 一筆記錄具有巢狀位址和標籤列表,如 JSON 所示,然後強制進入 CSV 列

扁平 CSV 行 `id,name,city` 後面接 `001,Ada,London` 乾淨地轉換為具有三個字串屬性的一個物件。如果 JSON 相反地包含 `address: {city: "London"}` 和 `tags: ["math","code"]`,則反向轉換會將這些巢狀值寫入位址和標記列下的 JSON 字串。

再次載入 CSV 會產生包含 JSON 語法的字串,而不是重建的巢狀值。稍後的應用程式可以在自己的模式下解析這些單元格,但 ToolAcre 不能。進行的比較準確地隔離了表結構結束和樹結構開始的位置。

工作範例:平面欄位直接轉換,而巢狀 JSON 僅保留為反向儲存格文字

JSON 行、模式語言和流解析器位於實作之外。輸出是一個縮排數組,檔案輸入在轉換之前讀入記憶體。不要根據解析工作器的存在來推斷逐記錄流。

同樣,工具不會驗證所需的屬性或數值範圍。它保護物件鍵免受空白和重複標題的影響並報告行形狀,但語義正確性仍然是消費者的責任。扁平化語法可以有效,而業務資料卻是錯誤的。

了解您要轉向哪種結構 - ToolAcre CSV Cleaner 如何在 CSV 和 JSON 之間轉換平面表格資料

了解目的地期望哪種結構。對於平面匯出,ToolAcre 提供了一個透明的橋樑:標題變成唯一鍵,行變成對象,值仍然是字串。對於巢狀應用程式模型,定義映射而不是透過意外的列命名約定強制分支。

在下載之前預覽表,解決參差不齊的行並檢查產生的 JSON。當在其狹窄的格式交集內使用時,此轉換器是最強大的。它不會消除它們的概念差異,值得信賴的工作流程不應該要求它這樣做。