Bộ chuyển đổi CSV sang JSON
Chuyển đổi các giá trị phân tách bằng dấu phẩy thành mảng hoặc đối tượng JSON.
Về CSV → JSON
CSV (Comma-Separated Values) là một định dạng dữ liệu bảng đơn giản, trong khi JSON (JavaScript Object Notation) là định dạng tiêu chuẩn của các API và ứng dụng web. Công cụ này chuyển đổi giữa hai định dạng, xử lý các trường được đặt trong dấu ngoặc kép, các ký tự được escape và các pemisah khác nhau. Khi «Dòng đầu tiên là tiêu đề» được tích, các tên cột trở thành các khóa của các đối tượng JSON.
Cách thức hoạt động
- Dán CSV của bạn: thả văn bản CSV của bạn vào trường nhập. Chọn pemisah phù hợp với dữ liệu của bạn (dấu phẩy, tab, dấu chấm phẩy hoặc thanh dọc) trong danh sách thả xuống.
- Cấu hình tùy chọn: tích «Dòng đầu tiên = tiêu đề» nếu dòng đầu tiên chứa các tên cột (chúng sẽ trở thành các khóa JSON). Tích «Tự động phát hiện kiểu» để chuyển đổi số và boolean tự động.
- Chuyển đổi: mỗi dòng CSV trở thành một đối tượng JSON với các khóa từ tiêu đề, hoặc một mảng đơn giản nếu không có tiêu đề.
- Sao chép hoặc tải xuống: sao chép mảng JSON hoặc tải xuống một tệp .json để sử dụng trong mã hoặc API.
Tại sao chuyển đổi CSV thành JSON?
CSV là định dạng xuất phổ quát cho các spreadsheet, cơ sở dữ liệu và công cụ phân tích, nhưng hầu hết các API hiện đại, các ứng dụng JavaScript và các cơ sở dữ liệu NoSQL hoạt động với JSON. Chuyển đổi các xuất CSV từ Google Sheets, Excel, Airtable hoặc các công cụ cơ sở dữ liệu thành JSON là một nhiệm vụ hàng ngày trong kỹ thuật dữ liệu, phát triển web và tích hợp API. Bộ chuyển đổi này xử lý các trường hợp phổ biến: các trường được đặt trong dấu ngoặc kép chứa dấu phẩy, dấu ngoặc kép được escape bên trong, kết thúc dòng Windows (CRLF) và các cột hỗn hợp số/chuỗi với phát hiện kiểu thông minh.
Tính năng
- Bốn pemisah để chọn, dấu phẩy, tab, dấu chấm phẩy hoặc thanh dọc, qua một danh sách thả xuống
- Hỗ trợ tiêu đề, dòng đầu tiên được sử dụng làm tên khóa JSON
- Ép kiểu, các số và boolean được tự động phát hiện
- Hỗ trợ tệp lớn, xử lý các tệp với hàng ngàn dòng
- Tùy chọn pretty-print, đầu ra JSON được thụt lề hoặc gọn
Chuyển đổi CSV sang JSON là gì?
Chuyển đổi CSV sang JSON lấy một tệp văn bản dạng bảng phẳng (các hàng giá trị được phân tách bằng dấu phẩy) và xuất ra một mảng JSON trong đó mỗi hàng trở thành một đối tượng có khóa là tiêu đề cột. Cùng dữ liệu ("tên,tuổi" xuống dòng "Alice,30" xuống dòng "Bob,25") chuyển từ CSV hai hàng thành một mảng JSON gồm hai đối tượng, mỗi đối tượng có các trường tên và tuổi. Việc chuyển đổi có thể đảo ngược (json-to-csv bao gồm chiều ngược lại).
CSV vẫn là định dạng xuất phổ biến cho các bảng tính (Excel, Google Sheets, Numbers, LibreOffice Calc) và cơ sở dữ liệu SQL (mysqldump, pg_dump). JSON là định dạng chiếm ưu thế cho các API web, cơ sở dữ liệu NoSQL, và ứng dụng JavaScript. Chuyển đổi giữa chúng là tác vụ tương tác phổ biến nhất trong kỹ thuật dữ liệu, đường ống ETL và công việc front-end.
Trình chuyển đổi này xử lý bốn dấu phân tách (dấu phẩy, dấu chấm phẩy, tab, pipe), các hàng tiêu đề tùy chọn và phát hiện tự động các kiểu số và boolean. Nó triển khai các quy tắc trích dẫn RFC 4180 để các trường được trích dẫn với dấu phẩy nhúng, xuống dòng, hoặc dấu ngoặc kép đôi được phân tích chính xác. Đầu ra là JSON được in đẹp với thụt lề hai khoảng trắng sẵn sàng để sao chép hoặc tải xuống.
Bên trong trình chuyển đổi có gì
Thanh điều khiển trên cùng hiển thị ba nút điều khiển thay đổi hành vi phân tích cú pháp: một danh sách thả xuống dấu phân tách (dấu phẩy, dấu chấm phẩy, tab, hoặc pipe), một hộp kiểm Hàng đầu tiên là tiêu đề, và một hộp kiểm Tự động phát hiện kiểu. Trước tiên chọn dấu phân tách khớp với dữ liệu nguồn của bạn, sau đó quyết định xem hàng tiêu đề có nên được thăng cấp thành khóa đối tượng hay giữ lại làm hàng dữ liệu.
Hai textarea hiển thị đầu vào CSV ở bên trái và đầu ra JSON ở bên phải. Đầu ra là chỉ đọc và cập nhật sau khi bạn nhấp vào Chuyển đổi sang JSON. Một bộ đếm hàng bên dưới các nút hiển thị số hàng mà trình phân tích cú pháp nhận ra; nếu nó khác với những gì bạn mong đợi, hãy kiểm tra lại dấu phân tách hoặc tìm kiếm các dấu ngoặc kép không cân bằng trong đầu vào của bạn.
Năm nút hành động nằm dưới các pane: Chuyển đổi sang JSON chạy chuyển đổi, Sao chép ghi đầu ra vào clipboard của bạn, Mẫu tải một CSV mẫu để bạn có thể thấy định dạng mong đợi, Xóa làm trống cả hai textarea, và Tải xuống lưu JSON dưới dạng tệp .json. Cũng có một bảng xem trước ẩn xuất hiện khi bạn nhấp vào Mẫu, hiển thị các hàng đã phân tích trong bố cục dạng bảng.
Lịch sử và bối cảnh
Thẻ đục lỗ Hollerith khai trương dữ liệu dạng bảng (1890)
Cuộc điều tra dân số Hoa Kỳ năm 1890 chạy trên các thẻ đục lỗ của Herman Hollerith, mỗi thẻ giữ các cột dữ liệu vị trí cố định. Ý tưởng về hàng-và-cột như một định dạng dữ liệu đã đi trước máy tính kỹ thuật số 50 năm. Mọi định dạng dạng bảng hiện đại (CSV, TSV, Excel, Parquet) đều truy nguyên hình dạng hình chữ nhật của nó về thẻ đục lỗ. Công ty Computing-Tabulating-Recording phát triển từ các bằng sáng chế của Hollerith đã trở thành IBM vào năm 1924.
CSV xuất hiện từ I/O hướng danh sách của FORTRAN (1972)
Trình biên dịch FORTRAN của IBM năm 1972 đã giới thiệu I/O hướng danh sách trong đó các giá trị được phân tách bằng dấu phẩy có thể được đọc vào nhiều biến trong một lệnh gọi. Quy ước này lan sang BASIC, các định dạng báo cáo mainframe và máy tính cá nhân thuở ban đầu. Đến những năm 1980, hầu hết các chương trình bảng tính (VisiCalc, Lotus 1-2-3, Excel) đều có thể xuất văn bản được phân tách bằng dấu phẩy. Không có một đặc tả duy nhất, vì vậy các phương ngữ sinh sôi.
RFC 4180 chuẩn hóa CSV (2005)
RFC 4180 của Yakov Shafranovich, công bố vào tháng 10 năm 2005, đã cung cấp cho CSV đặc tả được trích dẫn rộng rãi đầu tiên của nó. Nó định nghĩa việc sử dụng các kết thúc dòng CRLF, thoát dấu ngoặc kép đôi (một dấu ngoặc kép bên trong trường được trích dẫn được viết thành hai dấu ngoặc kép), và một ký tự phân tách duy nhất. RFC là Informational, không phải Proposed Standard, vì vậy nhiều công cụ vẫn lệch khỏi nó, nhưng RFC 4180 vẫn là tham chiếu kinh điển cho CSV được định dạng tốt trông như thế nào.
JSON được xác định (2001) và chuẩn hóa (2013)
Douglas Crockford đã ghi lại JSON vào tháng 4 năm 2001. Đó là một định dạng rõ ràng để tuần tự hóa các đối tượng JavaScript nhưng nhanh chóng lan sang mọi ngôn ngữ. ECMA-404 đã chuẩn hóa nó vào năm 2013, RFC 8259 thay thế RFC 4627 vào năm 2017. Định dạng này được cố ý tối giản (không có nhận xét, không có lược đồ), đó chính xác là lý do tại sao nó trở thành ngôn ngữ chung của API.
Các biến thể CSV theo lãnh thổ xuất hiện (từ những năm 1990)
Ở các quốc gia mà dấu phẩy được sử dụng làm dấu phân tách thập phân (Pháp, Đức, hầu hết châu Âu lục địa, Brazil), Excel xuất CSV với dấu phân tách dấu chấm phẩy để tránh xung đột với dấu phẩy thập phân. Ở các quốc gia nói tiếng Anh dấu phẩy vẫn còn. Cùng một cài đặt Excel tạo ra CSV khác nhau tùy thuộc vào ngôn ngữ hệ điều hành, đó là lý do tại sao trình chuyển đổi này hiển thị một danh sách thả xuống dấu phân tách thay vì đoán.
PapaParse và sự trỗi dậy của CSV trong trình duyệt (2014)
PapaParse của Matt Holt (2014) đã trở thành trình phân tích cú pháp CSV JavaScript trên thực tế. Thiết kế của nó (tự động phát hiện dấu phân tách, xử lý các tệp lớn với web worker, tuân thủ RFC 4180 nghiêm ngặt) đã trở thành mẫu cho mọi trình chuyển đổi trong trình duyệt theo sau. Công cụ này triển khai một trình phân tích cú pháp nhẹ hơn được điều chỉnh cho bốn dấu phân tách phổ biến và các trường hợp RFC 4180 được trích dẫn nhiều nhất, không có worker (không cần thiết cho các đầu vào kilobyte đến megabyte điển hình của UI này).
Quy trình thực tế
Xuất bảng tính sang thân yêu cầu API
Bạn đã xuất danh sách liên hệ 200 hàng từ Google Sheets dưới dạng CSV. Dán ở đây, để Hàng đầu tiên là tiêu đề được đánh dấu, nhấp vào Chuyển đổi. Mảng JSON đầu ra sẵn sàng để POST đến điểm cuối API CRM mong đợi bulk-create.
Tệp seed cơ sở dữ liệu từ CSV
Bạn có CSV sản phẩm từ một hệ thống cũ. Chuyển đổi thành JSON, lưu dưới dạng seed.json, và tải vào MongoDB hoặc DynamoDB với mongoimport hoặc AWS CLI. Mảng JSON ánh xạ trực tiếp đến một collection mà không cần lược đồ rõ ràng.
Dữ liệu cho các thư viện vẽ biểu đồ (D3, Chart.js, Recharts)
D3.js chấp nhận CSV trực tiếp qua d3.csv, nhưng Chart.js và Recharts muốn JSON. Chuyển đổi CSV doanh số hàng tháng của bạn ở đây, đặt mảng kết quả vào thành phần React của bạn và truyền nó cho prop biểu đồ. Tùy chọn Tự động phát hiện kiểu đảm bảo các cột số trở thành số thực tế, không phải chuỗi.
Dữ liệu giả cho frontend
Khi xây dựng UI trước khi backend tồn tại, dữ liệu giả tồn tại tốt trong tệp JSON được nhập với require hoặc fetch. Phác thảo các bản ghi của bạn trong bảng tính, xuất CSV, chuyển đổi ở đây và dán vào mockData.json. Lặp lại bằng cách chỉnh sửa bảng tính (dễ dàng hơn so với chỉnh sửa JSON bằng tay) và chuyển đổi lại.
Phân tích tệp nhật ký với jq
Một số nhật ký máy chủ có hương vị CSV. Chuyển đổi thành JSON, sau đó truyền qua jq để lọc, sắp xếp và tổng hợp. Việc chuyển đổi thu hẹp khoảng cách giữa nhật ký tệp phẳng và các công cụ xử lý luồng mong đợi các bản ghi có cấu trúc.
Nhập hàng loạt CMS
Các nền tảng CMS không đầu (Contentful, Sanity, Strapi, Directus) thường chấp nhận các nhập JSON. Người biên tập viết nội dung trong một bảng tính quen thuộc, bạn chuyển đổi ở đây và chạy một tập lệnh nhập một lần. Hàng tiêu đề trở thành tên trường ánh xạ với lược đồ CMS của bạn.
Các cạm bẫy phổ biến
Các trường được trích dẫn với dấu phẩy nội bộ
Một hàng như 1,"Smith, John",30 có ba trường logic, không phải bốn, vì dấu phẩy bên trong trường được trích dẫn là dữ liệu, không phải dấu phân tách. Trình phân tích cú pháp này tôn trọng thoát dấu ngoặc kép đôi RFC 4180, nhưng CSV bị lỗi định dạng (thiếu dấu ngoặc kép đóng, dấu ngoặc kép không khớp) sẽ tạo ra JSON vô nghĩa. Sử dụng một linter CSV hoặc nhập tệp vào một bảng tính trước để làm xuất hiện các lỗi cấu trúc.
Xuống dòng được nhúng bên trong các trường được trích dẫn
RFC 4180 cho phép các xuống dòng nguyên văn bên trong các trường được trích dẫn bằng dấu ngoặc kép đôi, nhưng nhiều trình phân tích cú pháp dựa trên dòng đơn giản coi mỗi xuống dòng là một bộ phân tách bản ghi. Nếu CSV của bạn có các bình luận hoặc địa chỉ nhiều dòng bên trong dấu ngoặc kép, số hàng có thể không khớp với số dòng trực quan. Trình chuyển đổi này xử lý chúng đúng cách, nhưng các công cụ hạ nguồn có thể không.
Byte Order Mark (BOM) ở đầu tệp
Các công cụ Windows (đặc biệt là Excel) đôi khi thêm tiền tố BOM ba byte (EF BB BF) vào các tệp CSV UTF-8. Khi bạn sao chép từ một tệp có tiền tố BOM, tiêu đề đầu tiên nhận được tiền tố vô hình làm cho "name" không khớp với "name" trong mã của bạn. Mở tệp trong một trình chỉnh sửa hex hoặc xóa BOM bằng một dòng (sed trong unix, Get-Content trong PowerShell) trước khi dán ở đây.
Dấu phẩy so với dấu chấm phẩy theo ngôn ngữ
Một xuất Excel ngôn ngữ Pháp sử dụng dấu chấm phẩy vì dấu phẩy là dấu phân tách thập phân. Nhập nó với dấu phân tách dấu phẩy mặc định sẽ chia 1,234 thành hai trường. Luôn chọn dấu phân tách khớp với nguồn. Nếu bạn không chắc, hãy xem dòng đầu tiên trong một trình chỉnh sửa văn bản thông thường; bộ phân tách rõ ràng là cái bạn muốn.
Các số 0 đứng đầu bị mất khi ép kiểu
Mã bưu chính, số điện thoại và SKU sản phẩm thường bắt đầu bằng số 0 (ví dụ: "01234"). Tự động phát hiện kiểu ép buộc những số này thành số nguyên, làm mất số 0 đứng đầu (1234). Đối với các cột mà số 0 đứng đầu quan trọng, bỏ chọn Tự động phát hiện kiểu để các giá trị vẫn là chuỗi. Hoặc chuyển đổi và sau đó bao bọc thủ công các trường bị ảnh hưởng bằng dấu ngoặc kép.
Tiêm công thức Excel (bom CSV)
Nếu một ô CSV bắt đầu bằng =, +, - hoặc @, Excel có thể đánh giá nó như một công thức khi tệp được mở. =cmd|'/c calc'!A1 khởi chạy máy tính trên các máy Windows. Đây là một vector tấn công đã biết khi các ứng dụng web xuất dữ liệu do người dùng kiểm soát sang CSV. Việc chuyển đổi sang JSON vô hiệu hóa mối đe dọa (JSON không có đánh giá công thức), nhưng CSV gốc vẫn nguy hiểm.
Quyền riêng tư và xử lý dữ liệu
Tất cả phân tích cú pháp xảy ra trong trình duyệt của bạn bằng cách sử dụng một hàm JavaScript nhỏ. Chúng tôi không gửi CSV hoặc JSON của bạn đến một máy chủ, không ghi nhật ký đầu vào và không lưu trữ đầu ra. Các nút Sao chép và Tải xuống tương tác với hệ điều hành của bạn thông qua các API cử chỉ người dùng tiêu chuẩn và không thể nhìn thấy bởi các bên thứ ba.
Sau khi trang được tải, công cụ chạy ngoại tuyến. Bạn có thể ngắt kết nối khỏi mạng và chuyển đổi danh sách khách hàng, SKU nội bộ hoặc bất kỳ dữ liệu nào không được rời khỏi thiết bị của bạn. Công cụ này an toàn cho các quy trình làm việc lân cận với HIPAA vì đường dẫn dữ liệu không bao giờ vượt qua một ranh giới bên ngoài.
Khi không sử dụng trình chuyển đổi này
Các tệp rất lớn (trên 10 MB)
Trình chuyển đổi giữ toàn bộ đầu vào trong bộ nhớ và xử lý nó đồng bộ, làm đóng băng tab trình duyệt trên các CSV nhiều triệu hàng. Đối với các tệp trên 10 megabyte, hãy sử dụng một trình phân tích cú pháp luồng (mô-đun csv Python, csv-parse của Node, crate csv của Rust) đọc từng hàng một.
Hình dạng đối tượng lồng nhau trong các ô
CSV bằng thiết kế là phẳng. Nếu dữ liệu của bạn có các đối tượng hoặc mảng lồng nhau bên trong các ô (ví dụ: một cột tags với các giá trị được phân tách bằng dấu phẩy), việc chuyển đổi coi chúng là chuỗi, không phải mảng. Bạn sẽ cần một bước hậu xử lý trong JavaScript hoặc Python để chia chuỗi và xây dựng lại hình dạng lồng nhau.
Dữ liệu nhị phân hoặc không phải UTF-8
Các tệp CSV từ các hệ thống Windows cũ hơn có thể được mã hóa dưới dạng Windows-1252 (CP-1252) thay vì UTF-8. Các ký tự đặc biệt (é, ñ, ü) xuất hiện dưới dạng mojibake khi được dán vào một textarea UTF-8. Lưu lại tệp dưới dạng UTF-8 trong trình chỉnh sửa văn bản của bạn (hoặc chạy iconv từ dòng lệnh) trước khi dán.
Dữ liệu truyền phát thời gian thực
Nếu CSV của bạn đang được thêm vào liên tục (một nguồn nhật ký kiểu tail), công cụ batch này không thể theo kịp. Sử dụng một trình phân tích cú pháp luồng được truyền qua websocket hoặc một cơ sở dữ liệu với chế độ nhập CSV (Postgres COPY FROM, MySQL LOAD DATA INFILE).
Các câu hỏi khác
Trình phân tích cú pháp có tuân thủ nghiêm ngặt RFC 4180 không?
Phần lớn. Trình phân tích cú pháp xử lý thoát dấu ngoặc kép đôi (hai dấu ngoặc kép bên trong trường được trích dẫn có nghĩa là một dấu ngoặc kép theo nghĩa đen), các trường được trích dẫn với dấu phẩy và xuống dòng nhúng, và kết thúc dòng CRLF hoặc LF. Nó lệch khỏi RFC 4180 nghiêm ngặt bằng cách chấp nhận các trường không được trích dẫn với khoảng trắng đứng đầu hoặc đứng cuối (mà đặc tả không cho phép). Sự khoan dung thực dụng này phù hợp với những gì hầu hết các trình xuất CSV thực tế phát ra.
CSV kỳ quặc của Excel ảnh hưởng đến đầu ra như thế nào?
Excel thêm BOM vào các tệp UTF-8, đôi khi sử dụng mã hóa Windows-1252 và ưu tiên dấu chấm phẩy trong các ngôn ngữ không phải tiếng Anh. Xóa BOM và lưu lại dưới dạng UTF-8 trước khi dán. Chọn dấu phân tách đúng từ danh sách thả xuống. Cảnh giác với các số 0 đứng đầu trên các cột giống như số; Excel thường tự loại bỏ chúng khi bạn mở CSV.
Còn UTF-8 với BOM so với UTF-8 thuần túy thì sao?
UTF-8 với BOM có tiền tố ba byte (EF BB BF) báo hiệu mã hóa. Hầu hết các công cụ web (trình duyệt, trình phân tích cú pháp JSON) thích UTF-8 thuần túy không có BOM. Nếu CSV của bạn đến từ xuất UTF-8 của Excel, BOM có thể có mặt, và trường tiêu đề đầu tiên sẽ âm thầm chứa nó. Xóa BOM (sed -i '1s/^\xEF\xBB\xBF//' file.csv) trước khi dán.
Tôi có thể nhúng JSON bên trong một ô CSV không?
Bạn có thể, bằng cách bao quanh JSON trong dấu ngoặc kép đôi và thoát các dấu ngoặc kép bên trong. Trình chuyển đổi coi ô là một chuỗi, vì vậy JSON bên trong vẫn ở dạng chuỗi trong đầu ra. Một bước hậu xử lý (JSON.parse trên trường đó trong mã của bạn) tái tạo lại đối tượng được nhúng. Đây là một mẫu phổ biến khi gửi JSON bên trong các xuất bảng tính.
Tại sao đầu ra JSON của tôi bị thiếu một số cột?
Có khả năng cao một hàng có ít cột hơn tiêu đề (một ô trống đứng cuối bị bỏ khi xuất). Trình phân tích cú pháp phát ra undefined cho các giá trị bị thiếu, mà JSON.stringify bỏ, vì vậy đối tượng kết quả có ít khóa hơn dự kiến. Mở tệp nguồn trong một bảng tính để xem hàng nào ngắn và sửa dữ liệu hoặc hậu xử lý để điền các mặc định.
Điều này có hỗ trợ TSV (giá trị được phân tách bằng tab) không?
Có, chọn Tab từ danh sách thả xuống dấu phân tách. Các tệp TSV phổ biến khi các tệp CSV sẽ có quá nhiều ô được trích dẫn (bởi vì các tab hiếm khi là dữ liệu hợp lệ trong các ô bảng tính). Trình phân tích cú pháp xử lý TSV giống hệt nhau ngoại trừ dấu phân tách; các quy tắc trích dẫn và thoát là như nhau.
Công cụ liên quan
Bộ chuyển đổi JSON → CSV
Chuyển đổi các mảng JSON sang định dạng CSV. Pemisah có thể tùy chỉnh, tải xuống .csv.
Bộ định dạng & xác thực JSON
Định dạng, minify và xác thực JSON ngay lập tức. Thụt lề và thông báo lỗi có thể cấu hình.
Trình tạo bảng HTML
Xây dựng các bảng HTML một cách trực quan với một spreadsheet. Tùy chỉnh các kiểu và xuất mã HTML sạch.