JSON sang CSV

Thả file JSON chứa một mảng và tải về dạng CSV. Key của object thành cột (giá trị thiếu để trống), file mở thẳng trong Excel không vỡ dấu. 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 JSON, hoặc bấm để chọn

JSON

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

Công cụ này chuyển một mảng JSON thành file CSV mà không cần rời khỏi trình duyệt. Thả một file JSON vào, chọn dấu phân cách cho đầu ra — phẩy, chấm phẩy, tab hoặc gạch đứng — rồi tải về file CSV được dựng từ nội dung mảng của bạn.

Mọi thứ diễn ra ngay trên thiết bị. Một module WebAssembly nhỏ được nạp vào tab trình duyệt sẽ đọc JSON của bạn, xác định cấu trúc của nó, rồi ghi ra CSV ngay trên máy bạn, nên không có bước tải lên và cũng không có server nào tham gia.

Mẹo: Công cụ này cần một mảng JSON ở cấp cao nhất, không phải một object đơn lẻ. Nếu dữ liệu của bạn là một object lớn có chứa một danh sách nằm sâu bên trong — ví dụ trường "records" hay "items" — hãy tách riêng mảng đó ra một file trước, vì đó mới là mảng công cụ này sẽ biến thành các dòng CSV.

Biến mảng JSON thành các cột

Nếu mảng của bạn chứa các object, mọi key khác nhau xuất hiện trong tất cả các object sẽ trở thành một cột, theo đúng thứ tự lần đầu gặp — không sắp xếp theo alphabet, và không chỉ giới hạn ở những key có mặt trong object đầu tiên. Điều này quan trọng khi dữ liệu của bạn đến từ một API mà các bản ghi sau đôi khi có thêm một trường mà bản ghi trước không có; trường đó vẫn được cấp một cột riêng, chỉ là được thêm vào đúng vị trí lần đầu nó xuất hiện.

Nếu mảng của bạn chứa các mảng con, mỗi mảng con sẽ thành một dòng đúng như nó được viết, theo từng vị trí, không sinh ra tên cột nào cả — kiểu này giả định bạn đã biết mỗi vị trí mang ý nghĩa gì.

Giá trị lồng nhau và key không khớp nhau

Dữ liệu JSON thực tế hiếm khi phẳng. Khi một giá trị lại là một object hay mảng — một địa chỉ lồng bên trong, một danh sách thẻ tag — nó được chuyển thành chuỗi JSON và ghi vào ô đó thay vì bị tách thành nhiều cột hay bị bỏ đi. Kết quả là bạn có một ô CSV chứa chuỗi JSON gọn, hợp lệ, có thể parse lại nếu cần, thay vì mất hẳn cấu trúc dữ liệu đó.

Các object có key không đồng nhất cũng rất phổ biến, nhất là với những trường tùy chọn. Thay vì báo lỗi hay làm lệch cột, object nào thiếu một key nào đó chỉ đơn giản có một ô trống ở đó, còn phần còn lại của dòng vẫn khớp đúng dưới tiêu đề chung.

Vì sao kết quả mở đúng trong Excel

File CSV vốn không mang thông tin về bảng mã văn bản, và đó chính là lý do Excel đôi khi biến chữ có dấu thành ký tự lỗi khi mở một file do công cụ khác lưu ra. Để tránh điều đó, mọi file CSV từ công cụ này đều được gắn thêm dấu byte-order mark UTF-8 ở đầu file — vài byte vô hình mà Excel đặc biệt tìm kiếm để biết nó cần đọc phần còn lại của file như UTF-8. Nhờ vậy tên tiếng Việt, ký hiệu và các chữ có dấu khác đều giữ nguyên vẹn, dù bạn mở file trên Windows hay Mac.

Bước tiếp theo

Cần đi theo chiều ngược lại? CSV sang JSON chuyển file CSV hoặc TSV trở lại thành JSON, với lựa chọn đầu ra mảng object hoặc mảng mảng. Nếu dữ liệu gốc của bạn là file Excel thay vì JSON, Excel sang CSVCSV sang Excel lo phần chuyển đổi giữa bảng tính và CSV.

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

File JSON của tôi cần có dạng như thế nào thì công cụ mới xử lý được?
Cấp cao nhất bắt buộc phải là một mảng. Nếu là mảng các object, key của từng object sẽ tự động thành cột CSV. Nếu là mảng các mảng, mỗi mảng con sẽ thành một dòng đúng như nó được viết, không kèm tên cột nào cả. Một object đơn lẻ, một chuỗi hay một con số ở cấp cao nhất đều không được chấp nhận — bạn sẽ nhận thông báo rõ ràng rằng JSON phải là một mảng, thay vì một kết quả rỗng hoặc khó hiểu.
Các object của tôi không có cùng bộ key — những key thiếu sẽ ra sao?
Danh sách cột được xây từ mọi key xuất hiện trong tất cả các object, theo đúng thứ tự lần đầu gặp — chứ không chỉ giới hạn ở key của object đầu tiên. Object nào thiếu một key nào đó sẽ chỉ đơn giản có ô trống ở cột tương ứng, chứ không gây lỗi hay làm lệch các giá trị khác sang sai cột.
Nếu một giá trị trong dữ liệu của tôi lại là một object hoặc mảng lồng bên trong thì sao?
Giá trị đó sẽ được ghi vào ô dưới dạng chuỗi JSON gọn, các dấu ngoặc kép được thoát đúng cách để CSV vẫn hợp lệ — ví dụ một object địa chỉ sẽ trở thành một chuỗi JSON trên một dòng nằm gọn trong đúng một ô. Nó không bị tách ra nhiều cột, và vẫn là JSON hợp lệ nếu sau này bạn cần parse lại nội dung ô đó.
Vì sao file tải về mở đúng trong Excel, giữ nguyên chữ tiếng Việt có dấu, thay vì hiện ký tự lỗi?
File CSV mà công cụ này tạo ra bắt đầu bằng một dấu byte-order mark UTF-8 — ba byte vô hình ở ngay đầu file. Excel dựa vào dấu hiệu đó để nhận biết file là UTF-8 và hiển thị đúng các ký tự có dấu; thiếu nó, Excel thường đoán nhầm sang một bảng mã khác và chữ có dấu sẽ biến thành ký tự lỗi. Trình soạn thảo văn bản thuần và các công cụ khác đều bỏ qua dấu hiệu này nên không gây vấn đề gì ở nơi khác.
Tôi có thể chọn dấu phân cách khác cho đầu ra, ví dụ chấm phẩy hay tab thay vì dấu phẩy không?
Có — dấu phân cách đầu ra là một tùy chọn riêng, gồm dấu phẩy, chấm phẩy, tab hoặc gạch đứng. Điều này hữu ích nếu bạn nhắm tới khu vực mà Excel mặc định dùng chấm phẩy làm dấu phân cách danh sách thay vì dấu phẩy, hoặc nếu bạn muốn tạo ra file kiểu TSV cho một công cụ nào đó cần tab.
File JSON của tôi có bị tải lên server nào để chuyển đổi không?
Không. Việc chuyển đổi chạy qua một module WebAssembly được nạp ngay vào tab trình duyệt của bạn — JSON được đọc, cấu trúc mảng được duyệt qua và CSV được dựng lên hoàn toàn trên thiết bị của bạn, không có gì đi qua mạng ở bất kỳ bước nào.