Bộ chuyển đổi JSON sang CSV
Dán mảng JSON các đối tượng bên trái, nhận CSV được trích dẫn đúng cách bên phải. Tiêu đề từ khóa đối tượng. Không tải lên.
- Dán mảng JSON các đối tượng vào vùng văn bản bên trái.
- Bấm "Chuyển sang CSV". Hàng tiêu đề được tạo từ hợp của tất cả khóa đối tượng.
- Sao chép kết quả hoặc tải xuống dưới dạng data.csv.
- Đối với giá trị lồng nhau, trường được chuyển thành chuỗi JSON — hãy làm phẳng trước nếu muốn cột phẳng.
Công cụ này làm gì?
Chuyển một mảng JSON các đối tượng sang CSV theo RFC 4180. Hàng tiêu đề là hợp của tất cả các khóa qua các đối tượng. Giá trị được trích dẫn CSV khi chứa dấu phẩy, dấu nháy hoặc xuống dòng. Số và boolean được phát ra không trích dẫn; null và undefined trở thành trường rỗng. Giá trị lồng nhau (đối tượng, mảng) được chuyển thành chuỗi JSON trong một trường được trích dẫn duy nhất — CSV không thể biểu diễn phân cấp một cách bản địa.
Ví dụ
Đầu vào JSON:
[
{"name":"Ada","age":36,"role":"engineer"},
{"name":"Grace","age":40,"role":"scientist"}
] Đầu ra CSV:
name,age,role
Ada,36,engineer
Grace,40,scientist Cạm bẫy thường gặp khi chuyển JSON sang CSV
CSV là định dạng phẳng. Phần lớn đầu ra "lạ" đến từ các hình dạng JSON không có biểu diễn phẳng.
- Cấp cao nhất không phải mảng. Đối tượng JSON `{"a":1,"b":2}` không thể trở thành CSV trực tiếp — bọc trong mảng: `[{"a":1,"b":2}]`. CSV sẽ có một hàng tiêu đề và một hàng dữ liệu.
- Khóa khác nhau giữa các hàng. Nếu đối tượng đầu có `{a,b}` và đối tượng thứ hai có `{a,c}`, tiêu đề là `a,b,c` (hợp). Hàng thiếu khóa phát ra trường rỗng. Tiền xử lý nếu muốn schema chặt chẽ hơn.
- Giá trị lồng nhau bị làm phẳng âm thầm. Trường như `{"address":{"city":"NY"}}` trở thành một cột CSV duy nhất với giá trị là chuỗi JSON `{"city":"NY"}`. Để có cột `address.city` riêng, hãy làm phẳng trong JavaScript trước: `{address_city: row.address.city}`.
- Xuống dòng nhúng trong giá trị. Chuỗi nhiều dòng trong giá trị JSON trở thành trường CSV được trích dẫn với ký tự `\n` thực bên trong dấu nháy. Hầu hết ứng dụng bảng tính xử lý đúng; một số công cụ cũ thì không.
- Ký tự đặc biệt trong tiêu đề. Khóa JSON với dấu phẩy, dấu nháy hoặc xuống dòng vẫn hoạt động nhưng tạo hàng tiêu đề mà một số bộ tiêu thụ CSV phân tích kém. Hãy đổi tên khóa thành chữ cái + dấu gạch dưới trước khi chuyển nếu cần tương thích tối đa.
- Dấu phẩy cuối trong JSON. `[{"a":1},]` là JSON không hợp lệ (dấu phẩy thừa sau phần tử cuối). Bộ phân tích từ chối nó trước bước CSV. Hầu hết bộ định dạng JSON loại bỏ chúng — chạy qua `/json-prettifier` trước nếu cần.
Câu hỏi thường gặp
Làm thế nào để có đầu ra phân tách bằng tab (TSV)?
Trang này phát ra CSV phân tách bằng dấu phẩy. Để có TSV, thay `,` bằng `\t` trong kết quả, hoặc chạy PapaParse với `delimiter: "\t"` trên dòng lệnh — cùng thư viện.
Thứ tự khóa có được giữ trong hàng tiêu đề không?
Có — hàng tiêu đề dùng thứ tự các khóa xuất hiện lần đầu qua tất cả đối tượng. Nếu muốn theo bảng chữ cái, hãy sắp xếp khóa trong JSON trước khi dán.
Ngày được xử lý thế nào?
JSON không có kiểu Date bản địa — ngày thường đã được chuỗi hóa thành chuỗi ISO 8601. Chúng đi qua không thay đổi. Nếu JSON của bạn từ JSON.stringify một Date, nó đã được chuyển thành chuỗi ISO tại thời điểm đó.
Có thể đi vòng JSON → CSV → JSON không?
Với dữ liệu mảng các đối tượng phẳng, có. Chuỗi vẫn là chuỗi, số vẫn là số (với typing động của PapaParse khi nhập). Giá trị lồng nhau mất cấu trúc ở phía CSV và quay lại dưới dạng trường chuỗi JSON, không phải đối tượng lồng nhau lần nữa.
JSON của tôi có được tải lên không?
Không. Mọi thứ chạy trong trình duyệt của bạn — JSON được phân tích và chuyển đổi bởi JavaScript trên trang này và không bao giờ gửi đến máy chủ. Xác nhận trong công cụ phát triển của trình duyệt.
Có thể chuyển tệp JSON lớn cỡ nào?
Đến khoảng 50 MB trước khi vùng văn bản trình duyệt bắt đầu chậm. Bản thân chuyển đổi tỷ lệ tuyến tính với kích thước đầu vào; nút thắt cổ chai là kết xuất. Với tệp lớn hơn, chạy PapaParse trên dòng lệnh.