Chuyển đến nội dung

Bộ chuyển đổi JSON ↔ CSV

Bộ chuyển đổi JSON ↔ CSV

Chuyển đổi hai chiều giữa CSV/TSV và JSON với tự động nhận diện dấu phân cách, ánh xạ hàng tiêu đề, cắt khoảng trắng và bỏ qua dòng trống. Hữu ích cho nhập/xuất dữ liệu, xử lý bảng tính và chuẩn bị payload API.

Bộ chuyển đổi JSON ↔ CSV

🚀 Bắt đầu nhanh

  • Dán hoặc nhập dữ liệu CSV/TSV vào trình chỉnh sửa CSV ở bên phải và JSON ở bên trái sẽ được tự động đồng bộ hóa
  • Bạn cũng có thể nhập JSON vào trình chỉnh sửa JSON ở bên trái và CSV ở bên phải cũng sẽ được tự động đồng bộ hóa.
  • Dấu phân cách được đặt thành "Tự động" theo mặc định. Công cụ này kiểm tra hàng đầu tiên và phát hiện dấu phẩy, tab, dấu chấm phẩy hoặc thanh dọc (|).
  • Khi bật "Sử dụng hàng tiêu đề", hàng đầu tiên của CSV sẽ được dùng làm tên khóa của đối tượng JSON; khi tắt, dữ liệu sẽ được chuyển thành mảng hai chiều.
  • Sử dụng "Cắt bớt trường" và "Bỏ qua dòng trống" để dọn sạch dữ liệu CSV lộn xộn.
  • Có thể tải xuống riêng từng trình chỉnh sửa: phía JSON tải xuống tệp .json và phía CSV tải xuống tệp .csv hoặc .tsv dựa trên dấu phân cách hiện tại.

📌 Tình huống sử dụng phổ biến

  • Excel sang JSON: sao chép các ô được phân tách bằng tab từ Excel vào ngăn CSV và chuyển đổi thành mảng đối tượng JSON ngay lập tức.
  • Phản hồi API cho bảng tính: chuyển đổi phản hồi JSON thành CSV để phân tích trong Excel hoặc Google Trang tính.
  • Chuẩn bị nhập cơ sở dữ liệu: chuyển đổi tập dữ liệu CSV thành JSON để nhập API hàng loạt.
  • Phân tích nhật ký: chuyển đổi nhật ký CSV thành JSON để truy vấn có cấu trúc bằng các công cụ như jq.
  • Di chuyển cấu hình: chuyển đổi giữa các bảng ánh xạ CSV và tệp cấu hình JSON.
  • Dọn dẹp dữ liệu: nhanh chóng làm sạch dữ liệu đã xuất bằng cách cắt bớt trường và bỏ qua dòng trống.

🧭 Gợi ý sử dụng

  • Dữ liệu được dán từ Excel thường được phân cách bằng tab và được phát hiện chính xác. Nếu phát hiện sai, hãy chọn dấu phân cách theo cách thủ công.
  • Khi bật "Sử dụng hàng tiêu đề", hàng đầu tiên được coi là tên cột, không phải dữ liệu. Nếu CSV của bạn không có tiêu đề, hãy tắt tùy chọn này để tránh mất hàng dữ liệu đầu tiên.
  • Nếu tồn tại tên tiêu đề trùng lặp, hậu tố sẽ tự động được thêm vào (ví dụ: tên, name_2) để giữ cho các khóa JSON là duy nhất.
  • JSON → CSV hoạt động tốt nhất với mảng đối tượng phẳng. Các đối tượng/mảng lồng nhau được tuần tự hóa dưới dạng chuỗi JSON trong các ô.
  • Các trường chứa dấu phân cách, dòng mới hoặc dấu ngoặc kép sẽ tự động được trích dẫn và thoát theo quy tắc CSV.

⚠️ Giới hạn & khả năng tương thích

  • CSV là định dạng bảng phẳng và không thể biểu diễn các cấu trúc lồng nhau một cách tự nhiên. Các đối tượng/mảng JSON lồng nhau được tuần tự hóa dưới dạng chuỗi và không thể khôi phục hoàn toàn khi chuyển đổi ngược lại.
  • CSV lưu trữ các giá trị dưới dạng văn bản. Sau chuyến đi khứ hồi JSON → CSV → JSON, các số và boolean có thể quay lại dưới dạng chuỗi.
  • UTF-8 BOM (\uFEFF) sẽ tự động bị xóa. Các mã hóa khác (ví dụ: GBK hoặc Shift-JIS) không được hỗ trợ; chuyển đổi sang UTF-8 trước.
  • Giống như JSON trong JavaScript, công cụ này tuân theo các giới hạn của IEEE 754. Các số nguyên nằm ngoài phạm vi an toàn 53 bit có thể mất độ chính xác.

🔒 Quyền riêng tư & bảo mật

  • Tất cả quá trình xử lý diễn ra cục bộ trong trình duyệt của bạn. Dữ liệu của bạn không bao giờ rời khỏi thiết bị của bạn.

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

CSV là gì và nó liên quan đến TSV và Excel như thế nào?

CSV (Giá trị được phân tách bằng dấu phẩy) là định dạng bảng văn bản thuần túy trong đó mỗi dòng là một bản ghi và các trường được phân tách bằng dấu phẩy. TSV là biến thể được phân cách bằng tab. Excel có thể mở và xuất cả hai định dạng, nhưng bản thân .xlsx là định dạng sổ làm việc nhị phân. Công cụ này hoạt động với tệp CSV/TSV văn bản thuần túy, không phải tệp .xlsx. Trong lịch sử, CSV không có tiêu chuẩn nghiêm ngặt nào. Năm 2005, RFC 4180 đã xác định các quy tắc chung: các trường được phân tách bằng dấu phẩy, các trường có ký tự đặc biệt được bọc trong dấu ngoặc kép và dấu ngoặc kép bên trong trường được trích dẫn được thoát dưới dạng hai dấu ngoặc kép. Các ứng dụng khác nhau vẫn triển khai CSV với những khác biệt nhỏ, đó là lý do tại sao các vấn đề về nhập/xuất lại phổ biến.

Tính năng phát hiện dấu phân cách "Tự động" hoạt động như thế nào? Nó có thể sai được không?

Công cụ phân tích hàng đầu tiên của CSV, đếm số dấu phẩy, tab, dấu chấm phẩy và thanh dọc (|) xuất hiện bên ngoài dấu ngoặc kép, rồi chọn ký tự xuất hiện nhiều nhất làm dấu phân cách. Với đa số dữ liệu CSV/TSV chuẩn, cách nhận diện này khá chính xác. Sai lệch có thể xảy ra khi chỉ có một cột (không có dấu phân cách) hoặc khi nội dung trường chứa nhiều ký tự phân cách. Khi đó, hãy chọn dấu phân cách thủ công.

Điều gì thay đổi khi bật hoặc tắt tùy chọn "Sử dụng hàng tiêu đề"?

Khi bật, hàng đầu tiên của CSV được coi là tên cột và mỗi bản ghi sẽ được chuyển thành đối tượng JSON với các tên đó làm khóa (ví dụ: {"name": "Alice", "age": "30"}). Khi tắt, tất cả các hàng, bao gồm cả hàng đầu tiên, đều được coi là dữ liệu và chuyển thành mảng hai chiều (ví dụ: [["name", "age"], ["Alice", "30"]]). Ở chiều JSON → CSV, bật tiêu đề sẽ ghi khóa đối tượng vào hàng đầu tiên của CSV.

JSON của tôi chứa các đối tượng lồng nhau. Tôi có thể chuyển đổi trở lại mà không mất dữ liệu sau CSV không?

Không đầy đủ. Trong JSON → CSV, các đối tượng/mảng lồng nhau được tuần tự hóa bằng JSON.stringify thành văn bản ô. Trong CSV → JSON, các giá trị đó vẫn ở dạng chuỗi và không được tự động phân tích cú pháp trở lại đối tượng. Nếu bạn cần độ chính xác về cấu trúc, hãy làm phẳng JSON trước khi chuyển đổi.

Tôi có thể chuyển đổi trực tiếp dữ liệu được sao chép từ Excel không?

Đúng. Khi bạn sao chép một phạm vi ô từ Excel và dán nó vào trình chỉnh sửa CSV, dữ liệu thường được phân cách bằng tab. Tự động phát hiện xác định nó là TSV và chuyển đổi chính xác. Nếu bạn muốn tải xuống .csv được phân cách bằng dấu phẩy, hãy chuyển dấu phân cách thành dấu phẩy trước khi tải xuống.

Dấu ngoặc kép và dấu ngắt dòng được xử lý như thế nào trong các trường CSV?

Theo RFC 4180: nếu nội dung trường chứa dấu phân cách, xuống dòng hoặc dấu ngoặc kép, toàn bộ trường sẽ được đặt trong dấu ngoặc kép; dấu ngoặc kép bên trong trường được escape thành hai dấu ngoặc kép liên tiếp (""). Quy tắc này áp dụng cho cả quá trình phân tích đầu vào và tạo đầu ra. Nếu dấu ngoặc kép không được đóng đúng cách, bạn sẽ thấy lỗi "dấu ngoặc kép CSV chưa được đóng".