CSV sang JSON

Thả file CSV hoặc TSV và tải về dạng JSON. Chọn dấu phân cách (hoặc để tự nhận diện), chọn dòng đầu có phải tiêu đề không, và chọn kiểu JSON đầu ra. Mọi thứ chạy cục bộ — không có gì được tải lên.

File không bao giờ rời khỏi thiết bị của bạn

Thả file CSV hoặc TSV, hoặc bấm để chọn

CSVTSVTXT

Công cụ này làm gì

Công cụ này chuyển một file CSV, TSV, hay file văn bản có dấu phân cách bất kỳ sang JSON mà không cần rời khỏi trình duyệt. Thả file vào, chọn dấu phân cách hoặc để tự nhận diện, quyết định dòng đầu có phải tiêu đề không, rồi chọn kiểu đầu ra bạn muốn — mảng object hay mảng mảng — sau đó chuyển đổi và tải về.

Không cần cài gì và không có bước tải lên nào. Việc chuyển đổi chạy qua một module WebAssembly nhỏ được nạp ngay vào tab trình duyệt, nên file của bạn được đọc, phân tích và biến thành JSON hoàn toàn trên thiết bị của bạn.

Mẹo: Nếu chưa chắc nên chọn kiểu nào, hãy bắt đầu với mảng object — nó giữ tên cột gắn liền với từng giá trị, đúng như phần lớn script, công cụ import bảng tính hay nền tảng no-code mong đợi. Chỉ chuyển sang mảng mảng khi bạn thực sự chỉ cần một bảng giá trị thuần túy, không kèm key.

Dấu phân cách, dòng tiêu đề và trường có ngoặc kép

Phần lớn file CSV dùng dấu phẩy, nhưng không phải lúc nào cũng vậy — nhiều phần mềm bảng tính ở châu Âu mặc định dùng chấm phẩy, còn file xuất dạng tab-separated cũng phổ biến đến mức có hẳn phần mở rộng riêng là TSV. Thay vì bắt bạn phải tự xác định trước, công cụ quét dòng đầu tiên của file, đếm số lần dấu phẩy, chấm phẩy, tab và gạch đứng xuất hiện bên ngoài phần văn bản có ngoặc kép, rồi chọn dấu xuất hiện nhiều nhất. Bạn luôn có thể ghi đè kết quả đoán này bằng danh sách chọn dấu phân cách nếu file của mình khác thường hoặc bạn muốn chọn tay cho chắc.

Các trường đặt trong ngoặc kép được xử lý đúng như phần mềm bảng tính vẫn làm: một giá trị bọc trong dấu ngoặc kép có thể chứa chính dấu phân cách, một dòng xuống hàng, hay một dấu ngoặc kép được thoát, mà bộ phân tích sẽ không nhầm bất kỳ phần nào trong đó thành ranh giới cột hay dòng. Một cái tên tiếng Việt viết có dấu phẩy trong ngoặc kép, hay một trường địa chỉ trải nhiều dòng, đều chuyển gọn thành một giá trị chuỗi JSON duy nhất.

Mảng object và mảng mảng: chọn kiểu JSON nào

Kiểu mảng object cho mỗi dòng một object JSON với key lấy từ dòng tiêu đề — cột tên email sẽ trở thành key email trong mọi object, còn nếu thiếu tiêu đề thì key sẽ được sinh tự động kiểu col3. Đây là kiểu mà phần lớn API, bảng tính và công cụ script mong đợi khi nhập JSON vào.

Kiểu mảng mảng bỏ hẳn key và cho bạn một bảng phẳng thuần túy: mỗi dòng chỉ là một danh sách giá trị theo đúng thứ tự cột. Kiểu này gọn hơn, và phù hợp hơn nếu nơi bạn đưa dữ liệu vào chỉ quan tâm đến vị trí giá trị chứ không cần tên trường.

Không có gì rời khỏi trình duyệt của bạn

Vì việc chuyển đổi chạy bằng WebAssembly ngay trong tab trình duyệt, file của bạn không cần gửi đi đâu để được xử lý — không có bước tải lên, không có server nào giữ bản sao dù chỉ trong chốc lát, và cũng không phụ thuộc vào kết nối mạng một khi trang đã tải xong. Đánh đổi lại là kết quả JSON được định dạng đẹp và, nhất là với kiểu mảng object, lớn hơn rõ rệt so với file CSV gốc — đó là định dạng dễ đọc, dễ debug đang hoạt động đúng như thiết kế, không phải dấu hiệu có gì sai.

Bước tiếp theo

Nếu cần đi theo chiều ngược lại, JSON sang CSV chuyển một mảng JSON trở lại thành file CSV. Đang làm việc với file Excel thay vì CSV thuần? Excel sang CSV trích một hoặc mọi sheet ra CSV trước, còn CSV sang Excel làm chiều ngược lại, biến CSV thành một file XLSX thật sự.

Câu hỏi thường gặp

Tôi có cần tự khai dấu phân cách của file CSV không?
Thường thì không. Công cụ quét dòng đầu tiên của file, bỏ qua phần nằm trong dấu ngoặc kép, rồi đếm xem dấu phẩy, chấm phẩy, tab và gạch đứng xuất hiện bao nhiêu lần ở phần còn lại — dấu nào xuất hiện nhiều nhất sẽ được chọn, và nếu bằng nhau thì mặc định là dấu phẩy. Nếu file của bạn dùng dấu phân cách khác thường, hoặc bạn muốn chắc chắn, danh sách chọn dấu phân cách cho phép ghi đè kết quả tự nhận diện bằng phẩy, chấm phẩy, tab hay gạch đứng theo ý mình. File TSV cũng xử lý y hệt, chỉ là dấu phân cách được chọn sẵn là tab.
Hai kiểu JSON đầu ra khác nhau ở điểm nào?
Mảng object cho mỗi dòng một tập key lấy từ dòng tiêu đề — đây là kiểu mà hầu hết script và công cụ no-code mong đợi khi đọc JSON. Mảng mảng thì cho ra một bảng phẳng: mỗi dòng chỉ là một danh sách giá trị, không có key nào cả. Nếu dòng đầu là tiêu đề mà bạn chọn kiểu mảng mảng, dòng tiêu đề đó chỉ được dùng để biết nó không phải dữ liệu — nội dung của nó không xuất hiện ở đâu trong kết quả, nên nếu vẫn cần tên trường gắn với từng giá trị thì hãy chọn mảng object.
Nếu dòng đầu tiên trong file của tôi không phải là tiêu đề thì sao?
Tắt tùy chọn dòng đầu là tiêu đề trước khi chuyển đổi. Khi đó mọi dòng đều được coi là dữ liệu, và nếu bạn chọn kiểu mảng object, key sẽ được tự sinh ra dựa trên vị trí cột như col1, col2, thay vì lấy từ một dòng vốn không phải tiêu đề.
File CSV của tôi có tên viết kiểu Nguyễn, Văn A với dấu phẩy nằm trong ngoặc kép — liệu có làm hỏng kết quả không?
Không. Các trường đặt trong ngoặc kép được xử lý theo đúng quy tắc CSV chuẩn: một giá trị bọc trong dấu ngoặc kép có thể chứa an toàn chính dấu phân cách, một dòng xuống hàng, hay một dấu ngoặc kép được thoát, mà không bị hiểu nhầm thành cột mới hay dòng mới. Cái tên trong ví dụ của bạn sẽ chuyển thành đúng một giá trị chuỗi JSON, giữ nguyên cả dấu phẩy bên trong.
File của tôi có bị tải lên đâu để thực hiện chuyển đổi không?
Không. Toàn bộ quá trình chạy qua một module WebAssembly được nạp vào tab trình duyệt của bạn — dữ liệu CSV được đọc, phân tích và chuyển thành JSON ngay trên thiết bị của bạn, kết quả không hề đi qua mạng trước khi bạn tải về.
Vì sao file JSON tải về lại lớn hơn nhiều so với file CSV gốc?
Có hai lý do. Thứ nhất, kết quả được định dạng đẹp với thụt lề hai khoảng trắng để dễ đọc và dễ so sánh, thay vì dồn hết vào một dòng. Thứ hai, nếu bạn dùng kiểu mảng object, mỗi dòng đều lặp lại tên cột làm key, trong khi CSV chỉ ghi tên cột một lần duy nhất ở dòng tiêu đề. Cộng lại, JSON thường lớn gấp khoảng hai đến ba lần file gốc — đây là điều bình thường chứ không phải lỗi. Chọn kiểu mảng mảng sẽ giảm bớt phần dư thừa này vì không phải lặp lại key.