Tiếng Việt

Dữ liệu & bảng tính · CSV Trình dọn dẹp

CSV vs JSON: Hai định dạng dữ liệu và ý tưởng về cấu trúc đằng sau chúng

· Lý lịch

csv json data-formats

Lưới hàng và cột phẳng bên cạnh đối tượng JSON phân nhánh có nhánh lồng nhau không thể khớp trực tiếp
Hình minh họa vector ToolAcre gốc

CSV mô tả một bảng; JSON mô tả một cái cây. Bài đăng này giải thích JSON đến từ đâu, tại sao nó mang các loại và cách lồng mà CSV không thể và ý nghĩa của sự không khớp mỗi khi dữ liệu di chuyển giữa hai loại.

Cùng một danh sách khách hàng trông hoàn toàn khác nhau dưới dạng CSV và JSON — tại sao mỗi định dạng lại mã hóa một ý tưởng cấu trúc khác nhau

Bảng khách hàng trông nhỏ gọn trong CSV vì mỗi hàng mượn ý nghĩa từ một tiêu đề chung. JSON lặp lại tên thuộc tính trong từng đối tượng và có thể lồng địa chỉ hoặc danh sách bên dưới khách hàng. Do đó, hai tệp này thể hiện các khả năng cấu trúc khác nhau ngay cả khi các dữ kiện hiển thị của chúng chồng lên nhau.

ToolAcre chuyển đổi giao điểm chung: tiêu đề phẳng cộng với các hàng dữ liệu trở thành mảng đối tượng phẳng cấp cao nhất. Nó không biến dấu câu trong tiêu đề thành các nhánh hoặc suy ra mảng từ các cột lặp lại. Hiểu được ranh giới đó sẽ giúp trình chuyển đổi phẳng không bị nhầm lẫn với trình thiết kế mô hình dữ liệu.

CSV dưới dạng lưới — hàng và cột, ý nghĩa vị trí và không có gì ngoài văn bản

Trong quá trình triển khai này, CSV là một bảng chuỗi hình chữ nhật. Hàng đầu tiên cung cấp tên tiêu đề và mỗi ô sau này nhận được ý nghĩa từ vị trí cột của nó. Các hàng ngắn được đệm và các hàng dài được cảnh báo vì vị trí chỉ hoạt động đáng tin cậy khi chiều rộng hàng phù hợp với tiêu đề.

Không có số gốc, boolean, đối tượng hoặc ô null. Dấu ngoặc kép bảo vệ cú pháp nhưng không chỉ định loại. Chuỗi chữ số và từ true vẫn giữ nguyên các giá trị văn bản, giúp giữ cho mã định danh ổn định và yêu cầu người tiêu dùng áp dụng lược đồ nơi mã định danh thực sự tồn tại.

Trong ToolAcre, CSV ô là các chuỗi được định vị dưới một hàng tiêu đề

Sổ làm việc yêu cầu lịch sử tiêu chuẩn và nguồn gốc đầu những năm 2000 của JSON nhưng kho lưu trữ này không phải là nguồn cho những ngày tháng hoặc ấn phẩm đó. Hành vi có thể xác minh là trình duyệt sử dụng `JSON.parse` và `JSON.stringify`, chấp nhận một mảng đối tượng cấp cao nhất để chuyển đổi thành bảng.

JSON không hợp lệ nhận được lỗi phân tích cú pháp cụ thể, gốc không phải mảng bị từ chối và mảng chứa nguyên hàm không được hỗ trợ. Những ranh giới thời gian chạy đó quan trọng đối với khách truy cập hơn là niên đại không được trích dẫn. Bối cảnh lịch sử phải đến từ các tiêu chuẩn chính bên ngoài bộ nguồn của nhiệm vụ này.

JSON lịch sử tiêu chuẩn là bằng chứng bên ngoài kho lưu trữ; hình dạng thời gian chạy được hỗ trợ có thể kiểm chứng được

Đối tượng JSON mang mỗi khóa bên cạnh giá trị của nó, trong khi ô CSV dựa vào tiêu đề ở cùng một chỉ mục. ToolAcre tính toán các khóa được phân biệt một lần, sau đó ánh xạ từng hàng theo vị trí. Các ô được biểu thị bị thiếu sẽ trở thành các chuỗi trống để các đối tượng chia sẻ một bộ khóa ổn định.

Phần tự mô tả đó có kích thước và chi phí lặp lại nhưng làm cho mỗi bản ghi JSON có thể hiểu được mà không cần định vị tiêu đề riêng biệt. Ngược lại, việc thay đổi thứ tự cột CSV mà không có tiêu đề sẽ phá hủy ý nghĩa. Việc chuyển đổi phải giữ tên và vị trí được ghép nối trong toàn bảng.

Cây so với bảng — lồng, mảng và khóa tùy chọn và lý do chúng không có vị trí tự nhiên trong một hàng

Các giá trị JSON có thể chứa các đối tượng và mảng, trong khi một ô CSV vốn không thể phân nhánh. Theo hướng ngược lại ToolAcre tuần tự hóa một giá trị lồng nhau với `JSON.stringify` và đặt văn bản JSON đó vào một ô. Nó không tạo cột address_city hoặc các hàng thẻ bổ sung.

Các khóa tùy chọn trên các bản ghi JSON trở thành tập hợp các cột theo thứ tự được nhìn thấy lần đầu tiên, với các khoảng trống trong đó đối tượng thiếu khóa. Đó là một sự làm phẳng có thể phòng thủ được đối với các vật thể phẳng thưa thớt. Nó không cung cấp bản đồ tự nhiên cho các cây tùy ý và tuyến đường nói như vậy thay vì đoán.

Ví dụ đã hoạt động — một bản ghi có địa chỉ lồng nhau và danh sách thẻ, được hiển thị trong JSON và sau đó được buộc vào CSV cột

Một hàng CSV phẳng `id,name,city` theo sau là `001,Ada,London` chuyển đổi rõ ràng thành một đối tượng có ba thuộc tính chuỗi. Thay vào đó, nếu JSON chứa `address: {city: "London"}` và `tags: ["math","code"]` thì chuyển đổi ngược sẽ ghi các giá trị lồng nhau đó dưới dạng chuỗi JSON trong cột địa chỉ và thẻ.

Việc tải lại CSV đó sẽ mang lại các chuỗi chứa cú pháp JSON chứ không phải các giá trị lồng nhau được xây dựng lại. Ứng dụng sau này có thể phân tích cú pháp các ô đó theo lược đồ riêng của nó, nhưng ToolAcre thì không. Việc so sánh được thực hiện sẽ tách biệt chính xác vị trí kết thúc của cấu trúc bảng và cấu trúc cây bắt đầu.

Ví dụ đã hoạt động: các trường phẳng chuyển đổi trực tiếp, trong khi JSON lồng nhau chỉ được giữ nguyên dưới dạng văn bản ô ngược lại

JSON Các dòng, ngôn ngữ lược đồ và trình phân tích cú pháp phát trực tuyến nằm ngoài phạm vi triển khai. Đầu ra là một mảng thụt lề và đầu vào tệp được đọc vào bộ nhớ trước khi chuyển đổi. Không suy luận việc truyền phát từng bản ghi khi có sự hiện diện của nhân viên phân tích cú pháp.

Tương tự như vậy, công cụ này không xác thực các thuộc tính hoặc phạm vi số bắt buộc. Nó bảo vệ các khóa đối tượng khỏi các tiêu đề trống và trùng lặp cũng như hình dạng hàng báo cáo, nhưng tính chính xác về ngữ nghĩa vẫn là trách nhiệm của người tiêu dùng. Cú pháp phẳng có thể hợp lệ trong khi dữ liệu kinh doanh sai.

Biết bạn đang hướng tới cấu trúc nào — cách ToolAcre CSV Cleaner chuyển đổi dữ liệu dạng bảng phẳng giữa CSV và JSON

Biết cấu trúc mà điểm đến mong đợi. Đối với xuất khẩu phẳng, ToolAcre cung cấp một cầu nối minh bạch: tiêu đề trở thành khóa duy nhất, hàng trở thành đối tượng và giá trị vẫn là chuỗi. Đối với các mô hình ứng dụng lồng nhau, hãy xác định ánh xạ thay vì buộc các nhánh thông qua các quy ước đặt tên cột ngẫu nhiên.

Xem trước bảng, giải quyết các hàng rời rạc và kiểm tra JSON đã tạo trước khi tải xuống. Trình chuyển đổi mạnh nhất khi được sử dụng trong phạm vi giao điểm hẹp của các định dạng. Nó không xóa bỏ sự khác biệt về khái niệm của họ và một quy trình làm việc đáng tin cậy không nên yêu cầu điều đó.