Chuyển JSON sang CSV

Chuyển đổi JSON sang định dạng CSV ngay lập tức. Tải mảng hoặc đối tượng JSON lên, tùy chỉnh ký tự phân cách và tải CSV mà không upload dữ liệu.

Upload
Kéo thả file vào đây
hoặc nhấp để chọn
Chuyển đối tượng lồng nhau sang dấu chấm (vd: user.name)

Giới Thiệu Chuyển JSON sang CSV

Chuyển JSON sang CSV là công cụ trực tuyến miễn phí giúp chuyển đổi dữ liệu JSON (JavaScript Object Notation) sang định dạng CSV (Comma-Separated Values). Tải file JSON lên hoặc dán dữ liệu JSON, chọn ký tự phân cách CSV và các tùy chọn, rồi tải file CSV đã 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.

Làm sao xử lý JSON lồng nhau khi chuyển sang CSV?

CSV về cơ bản là phẳng — mỗi hàng là một dãy giá trị vô hướng — trong khi JSON cho phép lồng tùy ý. Bộ chuyển đổi cung cấp ba chiến lược. Làm phẳng theo ký pháp chấm biến {"user":{"name":"Alice","age":30}} thành các cột user.name và user.age, lựa chọn phổ biến nhất cho phân tích. Làm phẳng dưới dạng chuỗi JSON giữ đối tượng lồng như một giá trị JSON đặt trong dấu ngoặc kép trong một cột, hữu ích khi bạn muốn đi vòng tài liệu hoặc tải nó vào cơ sở dữ liệu có kiểu cột JSON. Bùng nổ mảng (đôi khi gọi là unwind, theo toán tử $unwind của MongoDB) nhân đôi hàng cha một lần cho mỗi mục của mảng lồng, phù hợp khi mỗi phần tử mảng nên trở thành bản ghi riêng. Đối với cấu trúc lồng sâu hoặc đệ quy, hãy cân nhắc xuất sang NDJSON thay vào đó — RFC 4180 chưa bao giờ được thiết kế cho dữ liệu phân cấp, và ép buộc luôn mất thông tin.

Nếu các đối tượng JSON của tôi có các khóa khác nhau giữa các bản ghi thì sao?

Đây là vấn đề không đồng nhất sơ đồ và là quy tắc, không phải ngoại lệ, với JSON từ API thực tế. Bộ chuyển đổi quét mọi bản ghi để tính hợp tất cả các khóa, sau đó xuất một hàng tiêu đề duy nhất chứa mọi khóa tìm thấy và viết giá trị trống trong các ô nơi một bản ghi cụ thể không có giá trị cho cột đó. Kết quả là một CSV thưa nhưng có dạng chữ nhật mà mọi bảng tính và bộ nhập SQL có thể đọc. Nếu bạn chỉ muốn các khóa hiện có trong bản ghi đầu tiên (hữu ích khi các bản ghi sau có trường thừa nhiễu bạn muốn loại bỏ), bật "Dùng sơ đồ bản ghi đầu tiên". Nếu các bản ghi có hình dạng thực sự không tương thích — chẳng hạn một nửa là người dùng và một nửa là đơn hàng — chia đầu vào thành hai lần và tạo hai CSV thay vì ép chúng vào cùng nhau.

Mảng các giá trị nguyên thủy như ["red", "green", "blue"] được xử lý thế nào?

Theo mặc định, mảng các giá trị nguyên thủy được nối thành một ô duy nhất với dấu phân cách có thể cấu hình (dấu phẩy, chấm phẩy hoặc ống dọc) — vậy ["red","green","blue"] trở thành red;green;blue nếu bạn chọn chấm phẩy. Điều này giữ số lượng hàng ổn định nhưng làm việc phân tích sau này trong Excel khó khăn vì Excel không thể tách dễ dàng một ô. Lựa chọn thay thế là bùng nổ mảng: hàng được nhân đôi ba lần với một màu mỗi hàng, cho ra một bảng định dạng dài gọn gàng quen thuộc với người dùng Pandas và R. Lựa chọn thứ ba là cột chỉ mục: mảng trở thành cột colors.0, colors.1, colors.2, bảo toàn thứ tự và có thể đi vòng nhưng lãng phí không gian khi độ dài mảng thay đổi nhiều. Chọn lựa chọn mà công cụ sau — Excel, SQL, dashboard BI — xử lý tốt nhất.

Tại sao Excel làm hỏng các ký tự UTF-8 như é, ñ hoặc 中 trong CSV đã xuất?

Excel cho Windows trong lịch sử mở file CSV bằng trang mã mặc định của hệ thống (thường là Windows-1252 ở các locale Tây phương) thay vì UTF-8, làm hỏng bất kỳ ký tự không phải ASCII nào. Cách sửa tiêu chuẩn là thêm dấu thứ tự byte UTF-8 (EF BB BF) vào đầu file — BOM này cho Excel biết "hiểu cái này là UTF-8" và các ký tự hiển thị đúng. Bộ chuyển đổi này cung cấp tùy chọn "UTF-8 có BOM" trong cài đặt đầu ra, bật theo mặc định để tương thích. Excel hiện đại (365 và 2021+) và tất cả phiên bản Excel cho Mac xử lý đúng UTF-8 không có BOM. Nếu bạn kiểm soát quy trình của người nhận, hãy ưu tiên nhập qua trình hướng dẫn Excel "Dữ liệu → Từ Văn Bản/CSV" và chọn rõ ràng trang mã 65001 (UTF-8) — đường đó hoạt động cho mọi phiên bản Excel mà không cần sửa file.

Chuyển JSON sang CSV — Chuyển đổi JSON sang định dạng CSV ngay lập tức. Tải mảng hoặc đối tượng JSON lên, tùy chỉnh ký tự phân cách và tải CSV
Chuyển JSON sang CSV

Bộ chuyển đổi thoát các giá trị chứa dấu phẩy, dấu ngoặc kép hoặc xuống dòng như thế nào?

Bộ chuyển đổi tuân thủ nghiêm ngặt RFC 4180. Bất kỳ trường nào chứa dấu phân cách, dấu ngoặc kép hoặc ngắt dòng (LF, CR hoặc CRLF) được bao trong dấu ngoặc kép, và mỗi dấu ngoặc kép theo nghĩa đen bên trong trường được nhân đôi. Ví dụ, chuỗi Cô ấy nói "đi, bây giờ" với xuống dòng nhúng được mã hóa thành "Cô ấy nói ""đi, bây giờ""\n" với xuống dòng thực bên trong dấu ngoặc kép. Điều này tạo file đi vòng trung thực qua Excel, Google Sheets, LibreOffice, Pandas read_csv và PostgreSQL COPY — miễn là các bộ đọc đó cũng tuân theo RFC 4180, mà mọi công cụ hiện đại đều làm. Nếu bạn nhắm tới bộ đọc cũ không tuân thủ, bạn có thể chuyển bộ chuyển đổi sang chế độ "luôn trích dẫn", bao mỗi trường vô điều kiện và là cài đặt an toàn nhất cho mọi bên tiêu thụ không xác định.

Tôi có thể chọn trường JSON nào trở thành cột CSV và theo thứ tự nào không?

Có. Theo mặc định các cột xuất hiện theo thứ tự khóa được gặp lần đầu khi bộ chuyển đổi duyệt đầu vào, nhưng bạn có thể ghi đè điều này hoàn toàn. Bảng "Bộ chọn cột" liệt kê mọi khóa được phát hiện (với đường dẫn chấm cho trường lồng) và cho phép kéo sắp xếp lại, ẩn các cột không mong muốn và đổi tên tiêu đề mà không thay đổi đường dẫn JSON cơ bản. Bạn cũng có thể dán danh sách cột có thứ tự rõ ràng từ một mẫu nếu cần đầu ra khớp với sơ đồ hiện có như định dạng nhập sau. Đổi tên hoàn toàn mỹ thuật và đường dẫn JSON gốc được bảo tồn bên trong, vì vậy chạy lại chuyển đổi trên đầu vào được làm mới tạo ra cùng hình dạng cột.

Cách tốt nhất để chuyển đổi một file JSON nhiều gigabyte sang CSV là gì?

Tải tài liệu JSON nhiều gigabyte vào trình duyệt sẽ cạn kiệt bộ nhớ rất lâu trước khi bộ chuyển đổi làm bất cứ điều gì hữu ích. Cách tiếp cận đúng là chuyển đổi streaming ở dòng lệnh: jq -r 'paths(scalars) as $p | [($p|join(".")), getpath($p)] | @csv' là một dòng cho tài liệu khá phẳng, và các công cụ như Miller (mlr --ijson --ocsv cat input.json > output.csv), DuckDB (COPY (SELECT * FROM read_json_auto('input.json')) TO 'out.csv' (FORMAT CSV)) và thư viện Python ijson đều duyệt tài liệu từng sự kiện một mà không vật chất hóa nó. Nếu nguồn đã là NDJSON (một đối tượng JSON mỗi dòng), chỉ cần đưa qua Miller hoặc jq từng dòng cho khả năng mở rộng gần như không giới hạn. Sử dụng bộ chuyển đổi trình duyệt này cho tài liệu đến khoảng 50 MB; chuyển sang streaming dòng lệnh vượt qua đó.

Làm sao bảo toàn các kiểu dữ liệu JSON như boolean, null và số trong CSV?

CSV không có hệ thống kiểu — mỗi ô là văn bản — nên bộ chuyển đổi chọn các biểu diễn văn bản. Boolean trở thành các chuỗi nghĩa đen true và false (có thể cấu hình thành 1/0, Yes/No hoặc True/False). Null trở thành ô trống theo mặc định; nhiều bộ nhập SQL tự động coi ô trống là NULL, nhưng bạn có thể chọn xuất ra chuỗi nghĩa đen null hoặc sentinel như \N (mặc định Postgres COPY) nếu cần phân biệt chuỗi trống với null khi nhập. Số được xuất ở dạng thập phân nguyên bản, ổn cho hầu hết giá trị, nhưng số nguyên lớn vượt Number.MAX_SAFE_INTEGER (2^53 − 1) chịu mất độ chính xác tiêu chuẩn của JavaScript — nếu JSON của bạn đặt số nguyên lớn trong ngoặc kép như chuỗi ("id": "9007199254740993"), bộ chuyển đổi này bảo toàn dạng chuỗi không đổi và hệ thống sau của bạn có thể phân tích lại bằng BigInt.