§

Dán CSV bạn muốn chuyển sang JSON.

Dấu phân cách
Hàng đầu là tiêu đề
Ép kiểu
§

Output

json

Chuyển CSV sang JSON là tác vụ hàng ngày trong công việc dữ liệu ở Việt Nam: dữ liệu mở trên dulieu.gov.vn và data.gov.vn thường được Tổng cục Thống kê GSO xuất ở định dạng CSV, từ niên giám đến CPI và xuất nhập khẩu, để các nhóm dữ liệu chuyển sang JSON đưa vào BigQuery hay ClickHouse của VNG. Ngân hàng Nhà nước SBV phát hành chuỗi tỷ giá liên ngân hàng và lãi suất qua đêm dưới dạng CSV mà các đội fintech ở Momo, ZaloPay và VNPay reshape thành JSON trước khi gọi qua SDK NAPAS. Bộ Tài chính và Tổng cục Thuế phát hành báo cáo tài khóa và dữ liệu hóa đơn điện tử ở CSV, còn nhóm tích hợp SNAP tại các ngân hàng lớn dùng công cụ này để chuyển CSV thành JSON phục vụ kiểm tra bản đối chiếu trước khi nộp cho Kiểm toán Nhà nước.

Chuyển đổi CSV sang JSON là gì?

CSV (Comma-Separated Values, RFC 4180) là định dạng văn bản dạng bảng phẳng; JSON (JavaScript Object Notation, RFC 8259) là định dạng văn bản dạng cây cho dữ liệu có cấu trúc. Chuyển CSV sang JSON biến một bảng thân thiện với bảng tính thành một mảng đối tượng thân thiện với API — một đối tượng cho mỗi hàng, với hàng tiêu đề cung cấp khóa — mà không cần gõ lại một ô nào.

Chuyển đổi CSV sang JSON hoạt động như thế nào?

Mọi lần chuyển đổi đều chạy cục bộ trong trình duyệt của bạn. Các bước ở mức cao là:

  1. Bạn dán CSV vào khung nhập và nhấn CHUYỂN ĐỔI; công cụ phân tích văn bản và phát ra mảng JSON gồm các đối tượng trong khung kết quả.
  2. Một máy trạng thái xử lý từng ký tự (FIELD_START → IN_UNQUOTED_FIELD hoặc IN_QUOTED_FIELD) đi qua đầu vào, tôn trọng thoát dấu nháy lồng "", nhận diện cả ký tự kết thúc hàng \r\n\n, và tạo ra một mảng chuỗi 2-D làm biểu diễn trung gian.
  3. Nếu hàng đầu được đánh dấu là tiêu đề, các ô của nó trở thành khóa đối tượng; ngược lại công cụ tạo các khóa tổng hợp field0, field1, … để mỗi hàng vẫn ánh xạ thành một đối tượng đầy đủ.
  4. Dấu phân cách (dấu phẩy, dấu chấm phẩy, tab, sổ dọc hoặc tự nhận diện) và ép kiểu (số / boolean / null) đều có thể cấu hình. Khi bật ép kiểu, 30 trở thành số 30 và true trở thành boolean; khi tắt, mọi ô giữ nguyên là chuỗi.
  5. Kết quả được ghi vào vùng văn bản chỉ đọc dưới dạng văn bản định dạng JSON.stringify, và một liên kết tải xuống tạo một Blob với kiểu MIME application/json;charset=utf-8 để bạn lưu kết quả chỉ với một cú nhấp.

Vì sao chuyển CSV sang JSON bằng công cụ này?

  • Quyền riêng tư: mọi lần phân tích và chuyển đổi đều diễn ra trong trình duyệt của bạn. Dữ liệu không bao giờ đến máy chủ của chúng tôi.
  • Đúng đắn: bộ phân tích CSV là một máy trạng thái thực sự. Các trường chứa dấu phẩy có dấu nháy ("Bob, Jr."), dòng mới nhúng và dấu nháy thoát phân tích thành một ô, không phải ba — các cài đặt split(',') ngây thơ làm sai chỗ này.
  • Độ chính xác kiểu: tính năng ép kiểu tùy chọn chuyển các ô số và boolean thành số và boolean JSON thực, nên mảng nhận được sẵn sàng sử dụng trực tiếp mà không cần dọn dẹp thêm.
  • Linh hoạt: chọn dấu phân cách bất kỳ cho phương ngữ CSV không phải dấu phẩy, chọn hàng đầu có phải tiêu đề không, và bật/tắt ép kiểu cho trường hợp mọi ô phải giữ là chuỗi.

Các ứng dụng phổ biến của chuyển đổi CSV sang JSON là gì?

Việc phân tích CSV thành JSON xuất hiện ở nhiều mảng công việc dữ liệu và tooling:

  • Mô phỏng API: dán một fixture CSV xuất từ bảng tính và chuyển nó thành mảng JSON mà máy chủ cục bộ trả về như một endpoint giả lập.
  • Nhập dữ liệu: biến bảng tính xuất ra (danh bạ, hàng tồn kho, kết quả khảo sát) thành mảng JSON mà ứng dụng hoặc tập lệnh có thể lặp qua mà không cần phụ thuộc bộ phân tích CSV.
  • Chỉnh sửa cấu hình: để người dùng không kỹ thuật chỉnh cài đặt hoặc feature flag từng ô trong bảng tính, rồi chuyển CSV đã lưu thành JSON mà ứng dụng thực sự tải.

Ví dụ chuyển đổi CSV sang JSON trông như thế nào?

Dán name,age trên dòng đầu, Alice,30 trên dòng hai và "Bob, Jr.",25 trên dòng ba, rồi nhấn CHUYỂN ĐỔI với dấu phân cách là dấu phẩy, hàng đầu là khóa và ép kiểu bật, cho ra [{"name":"Alice","age":30},{"name":"Bob, Jr.","age":25}] — dấu phẩy có dấu nháy trong "Bob, Jr." vẫn nằm trong một trường, và các tuổi trở thành số JSON thực.

Bộ chuyển đổi CSV sang JSON này có chạy hoàn toàn trong trình duyệt của tôi không?

Có. Mọi lần phân tích và chuyển đổi đều chạy cục bộ dưới dạng JavaScript trong tab trình duyệt của bạn. Công cụ không hề gọi fetch, XMLHttpRequest hay navigator.sendBeacon — các payload CSV của bạn không bao giờ đến máy chủ của chúng tôi, một bộ chuyển đổi bên thứ ba hay bất kỳ pipeline phân tích nào. Công cụ cũng hoạt động ngoại tuyến sau khi trang đã tải, vì đây là một gói HTML/CSS/JS tĩnh không phụ thuộc API lúc chạy.

Kích thước đầu vào tối đa mà bộ chuyển đổi này có thể xử lý là bao nhiêu?

Bộ chuyển đổi đệm toàn bộ đầu vào trong bộ nhớ và chạy đồng bộ trên luồng chính, nên giới hạn thực tế phụ thuộc vào thiết bị của bạn. Đầu vào lên tới khoảng 10 MB CSV (xấp xỉ 100.000 hàng điển hình) chuyển đổi mà không có khựng đáng kể trên một laptop hiện đại. Vượt mức đó, UI có thể bị đứng trong khi bộ phân tích chạy. Chuyển đổi theo luồng dùng Web Worker cộng với bộ phân tích chia khối là một bước tiếp theo đã được lên kế hoạch — hiện tại, hãy chia nhỏ tập dữ liệu rất lớn trước khi dán vào.

Bộ phân tích CSV sang JSON xử lý dấu phẩy có dấu nháy và dòng mới nhúng như thế nào?

Bộ phân tích là một máy trạng thái xử lý từng ký tự với ba trạng thái (FIELD_START, IN_UNQUOTED_FIELD, IN_QUOTED_FIELD) — không phải split(',') ngây thơ. Một trường được bao bằng dấu nháy kép có thể chứa dấu phân cách, một CR, một LF hoặc một dấu nháy kép theo nghĩa đen được thoát bằng "", tất cả mà không phá vỡ biên trường. Vì vậy "Bob, Jr.",25 phân tích thành hai trường, không phải ba, và một mô tả nhiều dòng được nháy qua các hàng phân tích thành một ô duy nhất.

Số, boolean và ô trống được đánh kiểu như thế nào trong JSON đầu ra?

Kiểu được điều khiển bởi công tắc Ép kiểu. Khi bật ép kiểu bật (mặc định), một ô trông như số trở thành số JSON, true/false trở thành boolean, và null theo nghĩa đen trở thành JSON null; mọi thứ khác giữ nguyên là chuỗi. Khi ép kiểu tắt, mọi giá trị giữ nguyên là chuỗi bất kể nội dung — hữu ích khi số đứng đầu là 0, số điện thoại hoặc mã ID phải giữ nguyên. Các ô cuối thiếu trong hàng ngắn được phát ra là chuỗi rỗng để mọi đối tượng có đầy đủ khóa.

Phía CSV hỗ trợ những dấu phân cách nào?

Bốn dấu phân cách rõ ràng được hỗ trợ: dấu phẩy (,, mặc định RFC 4180), dấu chấm phẩy (;, phổ biến ở các locale châu Âu), tab (\t, phương ngữ TSV) và sổ dọc (|). Bạn cũng có thể chọn Tự nhận diện, đếm số lần xuất hiện của từng ứng viên trong 4 KB đầu của đầu vào, ngoài vùng nháy, rồi chọn cái xuất hiện nhiều nhất mà cho số cột nhất quán qua năm hàng đầu tiên.

Bộ chuyển đổi CSV sang JSON này phân tích bằng một máy trạng thái thực sự và phát ra JSON sạch sẵn sàng sử dụng mà bạn có thể dán thẳng vào một cuộc gọi API, một tập lệnh hoặc một bản review code — mà không tải lên một byte nào.