Chuyển CSV sang JSON
Chuyển đổi file CSV sang định dạng JSON ngay lập tức. Tải CSV lên, tùy chỉnh định dạng đầu ra và tải JSON mà không cần upload dữ liệu.
Giới Thiệu Chuyển CSV sang JSON
Chuyển CSV sang JSON là công cụ trực tuyến miễn phí giúp chuyển đổi file CSV (Comma-Separated Values) sang định dạng JSON (JavaScript Object Notation). Tải file CSV lên hoặc dán dữ liệu CSV, chọn định dạng đầu ra và tải file JSON đã chuyển đổi—tất cả được xử lý cục bộ trên trình duyệt để đảm bảo quyền riêng tư hoàn toàn.
Tại sao tất cả giá trị CSV của tôi xuất hiện dưới dạng chuỗi trong JSON đầu ra?
Vì đó đúng là gì trong tệp nguồn — CSV không có hệ thống kiểu, mỗi ô là văn bản. Bộ chuyển đổi mặc định tạo chuỗi để đi vòng tệp không mất mát, nhưng cũng cung cấp tùy chọn "suy luận kiểu" quét mỗi cột và ép ô thành số, boolean hoặc null khi toàn bộ cột khớp với mẫu. Suy luận kiểu tiện lợi nhưng rủi ro: cột mã ZIP nơi 90% hàng là số sẽ trông giống số nhưng mất các số 0 ở đầu, và cột nơi chuỗi "NULL" hoặc "N/A" có nghĩa là thiếu sẽ được chuyển đổi không thể đoán trước. Đối với pipeline sản xuất hãy ưu tiên kiểu rõ ràng cho từng cột: liệt kê cột nào nên là số, boolean, ngày hay chuỗi và để bộ chuyển đổi chỉ áp dụng các quy tắc đó. RFC 4180 chỉ mô tả các byte trên đĩa, không bao giờ ý nghĩa ngữ nghĩa, nên quyết định kiểu luôn nằm trên định dạng.
Bộ chuyển đổi xử lý hàng đầu tiên như thế nào — luôn được coi là tiêu đề?
Theo mặc định hàng đầu tiên được coi là tiêu đề và mỗi ô trở thành khóa JSON. Nếu file của bạn không có hàng tiêu đề, bật "Hàng đầu tiên là dữ liệu" và bộ chuyển đổi sẽ dùng khóa chung như column_1, column_2 — hoặc bạn có thể dán danh sách tiêu đề tùy chỉnh. RFC 4180 làm cho hàng tiêu đề là tùy chọn nhưng khuyến nghị nó, và hầu hết CSV thực tế đều có. Hãy cẩn thận với tiêu đề chứa khoảng trắng, dấu chấm hoặc ký tự đặc biệt: khóa như "Customer ID" hoặc "Order.Date" tạo JSON hợp lệ nhưng khó truy cập theo chương trình. Bộ chuyển đổi cung cấp bước tùy chọn "chuẩn hóa tiêu đề" chuyển khóa thành chữ thường, thay khoảng trắng bằng gạch dưới và bỏ ký tự không phải chữ-số, cho ra định danh snake_case sạch như customer_id và order_date thân thiện với mọi ngôn ngữ sau.
Tôi có thể tạo JSON lồng từ CSV phẳng dùng tiêu đề ký pháp chấm không?
Có. Nếu hàng tiêu đề CSV của bạn chứa các đường dẫn có chấm như user.name, user.address.city và user.address.zip, bật tùy chọn "Mở rộng khóa lồng" và bộ chuyển đổi sẽ xây dựng một đối tượng lồng cho mỗi hàng: {"user":{"name":"Alice","address":{"city":"Hà Nội","zip":"10000"}}}. Các đoạn số được coi là chỉ số mảng, nên items.0.sku và items.1.sku trở thành {"items":[{"sku":"A"},{"sku":"B"}]}. Đây là đảo ngược của làm phẳng ký pháp chấm được dùng bởi công cụ JSON-sang-CSV, nên các tệp đi vòng chính xác khi bạn dùng cả hai. Đối với hình dạng phức tạp không vừa với sơ đồ đường dẫn đơn giản — hợp không đồng nhất, cấu trúc đệ quy — hãy viết script ánh xạ tùy chỉnh trong JavaScript hoặc Python; bộ chuyển đổi xử lý 80% trường hợp phổ biến, không phải mọi sơ đồ tưởng tượng.
Tôi nhận được hình dạng JSON đầu ra nào — mảng đối tượng, đối tượng có khóa theo ID hay gì khác?
Mặc định là mảng các đối tượng, một cho mỗi hàng dữ liệu, là hình dạng được tiêu thụ phổ quát nhất và định dạng mà MongoDB, Pandas, BigQuery và hầu hết REST API mong đợi. Bộ chuyển đổi cũng cung cấp hai lựa chọn thay thế. "Đối tượng có khóa theo cột" dùng giá trị của một cột đã chọn làm khóa, tạo {"u_1":{...},"u_2":{...}} — hữu ích khi cần ngữ nghĩa tra cứu theo ID, nhưng yêu cầu giá trị duy nhất trong cột khóa. "NDJSON" xuất một đối tượng JSON mỗi dòng không có mảng bao bọc, định dạng đúng cho pipeline streaming (job tải BigQuery, Spark, ClickHouse) và tránh chi phí bộ nhớ đệm mảng đầy đủ ở cả hai bên. Chọn hình thức mảng cho đọc của con người và trao đổi; chọn NDJSON cho ETL quy mô lớn.

CSV của tôi dùng dấu chấm phẩy làm dấu phân cách và dấu phẩy làm dấu thập phân — bộ chuyển đổi có xử lý được không?
Có — và bạn không nên để nó tự động phát hiện trong trường hợp này. CSV được xuất bởi bảng tính ở các khu vực dùng dấu phẩy làm dấu thập phân (hầu hết châu Âu, Mỹ Latinh, Việt Nam) thường dùng dấu chấm phẩy làm dấu phân cách trường để tránh mơ hồ. Tự động phát hiện của bộ chuyển đổi cố gắng chọn dấu phân cách cho số lượng cột nhất quán nhất, thường bắt dấu chấm phẩy chính xác, nhưng bạn nên luôn xác minh bằng cách nhìn qua bản xem trước. Nếu các ô số của bạn dùng dấu phẩy làm dấu thập phân (1,5 cho một rưỡi), bật suy luận kiểu và chọn tùy chọn "Định dạng số châu Âu", nếu không 1,5 sẽ được phân tích là chuỗi "1,5" thay vì số 1.5. Các locale khác nhau cũng bất đồng về dấu phân cách hàng nghìn — làm các quy tắc đó rõ ràng.
Bộ chuyển đổi xử lý ô trống, giá trị thiếu và văn bản theo nghĩa đen "null" thế nào?
Theo mặc định một ô trống trở thành giá trị JSON null, văn bản theo nghĩa đen "null" vẫn là chuỗi, và một ô chỉ chứa khoảng trắng cũng được coi là trống. Bạn có thể thay đổi cả ba hành vi. "Ô trống thành chuỗi rỗng" tạo "" thay vì null — tốt hơn khi người tiêu thụ kiểm tra kiểu nghiêm ngặt và từ chối null. "Coi NA, N/A, NULL là null" phân tích các chuỗi sentinel phổ biến đó thành JSON null, hữu ích khi nguồn của bạn dùng một trong các quy ước đó. Đối với cột số, ô trống với suy luận kiểu được bật trở thành null thay vì 0, ngăn chặn lỗi phổ biến là tổng các giá trị thiếu thành 0. RFC 4180 không định nghĩa ngữ nghĩa cho trường trống, nên bạn phải chọn một quy ước và bám theo nó trong toàn pipeline.
CSV lớn nhất tôi có thể chuyển đổi trong trình duyệt mà không bị crash là bao nhiêu?
Giới hạn thực tế khoảng 50 MB hoặc 500 000 hàng trên trình duyệt máy để bàn hiện đại; bộ phân tích sử dụng cách tiếp cận streaming nội bộ, nhưng JSON kết quả phải được vật chất hóa trong bộ nhớ trước khi có thể hiển thị hoặc tải xuống. Đối với tệp ở phạm vi gigabyte, hãy chuyển sang bộ chuyển đổi streaming dòng lệnh: mlr --icsv --ojsonl cat input.csv > output.ndjson của Miller xuất NDJSON từng hàng một và dùng bộ nhớ không đổi bất kể kích thước tệp, COPY (SELECT * FROM read_csv_auto('input.csv')) TO 'out.ndjson' (FORMAT JSON, ARRAY false) của DuckDB cũng hiệu quả tương đương và thêm suy luận kiểu, và các module csv + json của Python kết hợp trong pipeline generator sẽ xử lý kích thước tùy ý. Đối với tệp rất rộng (hàng nghìn cột) hãy ưu tiên Parquet hơn JSON — lưu trữ định hướng cột nén tốt hơn nhiều và truy vấn chọn lọc mà không đọc toàn bộ tài liệu.
Làm sao thoát ký tự đặc biệt hoặc chuyển đổi ngày và dấu thời gian ISO đúng cách?
Trích dẫn và thoát ở cấp CSV tuân theo RFC 4180: các trường chứa dấu phân cách, dấu ngoặc kép hoặc xuống dòng phải được bao trong dấu ngoặc kép với dấu ngoặc kép nội bộ được nhân đôi, và bộ chuyển đổi xử lý điều đó tự động ở đầu vào. Về phía đầu ra JSON, các escape JSON tiêu chuẩn áp dụng: \" cho dấu ngoặc kép, \\ cho dấu gạch ngược, \n \r \t cho ký tự điều khiển và \uXXXX cho bất kỳ điểm mã Unicode nào trên phạm vi ASCII có thể in. Ngày không phải là kiểu JSON gốc, nên bộ chuyển đổi xuất chúng dưới dạng chuỗi ISO 8601 (2026-05-17T00:00:00Z) khi suy luận kiểu ngày được bật — đây là định dạng ngày duy nhất tương tác phổ quát, được chấp nhận bởi hàm tạo Date của JavaScript, fromisoformat của Python, Instant.parse của Java và mọi engine SQL chính. Tránh các định dạng theo locale như 17/05/2026 trong đầu ra.
