
Công cụ chuyển đổi JSON sang CSV/XML là gì?
Công cụ chuyển đổi JSON sang CSV/XML là tiện ích nhận một tệp JSON trên thiết bị, đọc dữ liệu và tạo văn bản theo định dạng CSV hoặc XML. Nhu cầu chính là đổi cách biểu diễn dữ liệu: từ cấu trúc đối tượng, mảng của JSON sang dạng hàng cột hoặc dạng phần tử đánh dấu để sử dụng ở phần mềm khác.
Người dùng nhận được hai dạng kết quả: nội dung đã chuyển đổi hiển thị đầy đủ và tệp có thể tải xuống. Kết quả là văn bản chỉ đọc, không phải bảng tương tác hay trình chỉnh sửa. Công cụ có vùng dán JSON (mặc định) và vẫn giữ cách chọn file JSON; công cụ không cung cấp nhập địa chỉ dữ liệu hoặc chỉnh sửa nội dung trước khi xuất.
Điểm quan trọng là việc chuyển đổi tuân theo các quy tắc cố định. Công cụ hợp nhất mọi trường dữ liệu thành bộ cột chung; theo mặc định, cấu trúc lồng nhau được làm phẳng thành cột dạng a.b (có tùy chọn giữ nguyên dạng JSON trong một ô), nhưng vẫn không bảo đảm giữ nguyên toàn bộ ý nghĩa của JSON ban đầu. Chọn được định dạng đầu ra chưa đồng nghĩa dữ liệu sẽ phù hợp với nơi nhận.
Các chức năng dưới đây được xác nhận bằng việc đọc mã. Kiến thức chung về JSON, CSV và XML được trình bày để giúp hiểu đầu ra; khả năng tương thích với từng phiên bản phần mềm vẫn cần kiểm tra riêng.

Các thuật ngữ cần hiểu khi chuyển đổi JSON sang CSV/XML
JSON
JSON là định dạng văn bản biểu diễn dữ liệu bằng đối tượng, mảng và các giá trị như chuỗi, số, boolean hoặc null. Đối tượng chứa những cặp tên trường và giá trị; mảng chứa một danh sách phần tử. JSON không phải mọi đoạn mã JavaScript: chú thích, tên trường không đặt trong ngoặc kép hoặc dấu phẩy thừa đều có thể làm nội dung không hợp lệ. Với công cụ này, đúng cú pháp là điều kiện đầu tiên, nhưng chưa đủ để bảo đảm chuyển đổi không mất dữ liệu.
CSV
CSV là định dạng văn bản mô tả bảng bằng các hàng và cột, thường sử dụng dấu phẩy để phân cách. Nó thích hợp với danh sách bản ghi có những trường tương ứng nhau. CSV không phải tệp Excel: không tự lưu công thức định dạng, nhiều trang tính hay thông tin kiểu ô như một tệp bảng tính chuyên dụng. Khi mở CSV, phần mềm nhận có thể tự đoán số, ngày tháng hoặc văn bản, nên cách hiển thị chưa chắc phản ánh đúng ý định ban đầu.
XML
XML là định dạng đánh dấu tổ chức dữ liệu bằng các phần tử có thẻ mở, thẻ đóng và khả năng lồng nhau. Chẳng hạn, một hồ sơ có thể chứa các phần tử con mô tả tên và nhóm. XML đúng cú pháp chỉ cho biết tài liệu tuân thủ quy tắc cơ bản của định dạng. Nó chưa chắc đáp ứng schema, tức bộ yêu cầu về cấu trúc và kiểu dữ liệu của hệ thống nhận. Công cụ này không xác nhận sự phù hợp với schema cụ thể.
UTF-8 và BOM
UTF-8 là cách mã hóa ký tự thành byte, giúp biểu diễn tiếng Việt và nhiều hệ chữ khác. BOM là dấu nhận diện có thể đặt ở đầu văn bản để hỗ trợ phần mềm nhận biết mã hóa. Mã nguồn thêm BOM vào CSV nhằm hỗ trợ đọc ký tự. Tuy nhiên, BOM không quyết định dấu phân cách cột, không giữ số 0 đầu và không buộc phần mềm coi mọi ô là văn bản. Nhận đúng tiếng Việt và nhập đúng cấu trúc bảng là hai vấn đề khác nhau.
Dữ liệu phẳng và dữ liệu lồng nhau
Dữ liệu phẳng có các trường giá trị đơn ở cùng cấp, ví dụ tên sản phẩm và số lượng. Dữ liệu lồng nhau chứa đối tượng hoặc mảng bên trong một trường, chẳng hạn hồ sơ chứa địa chỉ và danh sách liên hệ. Sự khác biệt này ảnh hưởng trực tiếp đến lựa chọn định dạng. Đưa cả một đối tượng vào một ô CSV không phải làm phẳng: làm phẳng cần quy tắc tạo cột con hoặc hàng bổ sung. Công cụ không triển khai quy trình đó.

Tệp đầu vào và kết quả đầu ra có những điều kiện nào?
Điều kiện đối với tệp JSON
Đầu vào trực tiếp là một tệp được chọn trên thiết bị. Bộ lọc lựa chọn hướng tới đuôi .json, nhưng phần mở rộng không chứng minh nội dung hợp lệ. Tệp phải được đọc thành văn bản và phân tích được theo cú pháp JSON; tệp trống, chú thích hoặc dấu phẩy thừa không đáp ứng điều kiện này.
Ngưỡng dung lượng là 5 × 1024 × 1024 = 5.242.880 byte, tương đương 5 MiB, dù giao diện gọi là 5MB. Tệp đúng bằng ngưỡng không bị loại bởi bước kiểm tra dung lượng. Với CSV, đầu vào phù hợp nhất là một đối tượng hoặc mảng không rỗng gồm các đối tượng phẳng cùng tập trường. Với XML, tên trường cần dùng được làm tên phần tử và nội dung cần phù hợp với quy tắc XML.
CSV và XML được xuất dưới dạng nào?
CSV được tải với tên mặc định data-exported.csv, dùng dấu phẩy phân cách, có hàng tiêu đề và BOM ở đầu. Mỗi ô dữ liệu được bao trong dấu ngoặc kép. XML được tải với tên data-exported.xml, có khai báo phiên bản 1.0, mã hóa UTF-8 và phần tử bao ngoài root. Đây là hai lựa chọn đầu ra, không phải một gói chứa cả hai định dạng.
Kết quả hiển thị khác tệp tải xuống ra sao?
Kết quả chỉ đọc và hiển thị toàn bộ nội dung đã tạo trong ô cuộn, không còn giới hạn 10 dòng. Tệp tải xuống chứa đúng nội dung đang hiển thị; riêng CSV được thêm BOM UTF-8 để Excel đọc đúng tiếng Việt.
Dòng văn bản không đồng nghĩa bản ghi. Một ô CSV chứa ký tự xuống dòng có thể chiếm nhiều dòng; ngược lại, nhiều phần tử XML có thể cùng nằm trên một dòng. Vì vậy, không nên dùng số dòng xem trước để suy ra số hồ sơ hay sản phẩm được xuất.

Công cụ chuyển dữ liệu sang CSV và XML theo quy tắc nào?
Cách xác định hàng, cột và giá trị CSV
Nếu dữ liệu gốc là một đối tượng, công cụ coi nó như một hàng. Nếu là mảng, mỗi phần tử được xử lý như một hàng; mảng rỗng bị báo lỗi. Các cột là hợp nhất khóa của tất cả các hàng, theo thứ tự xuất hiện lần đầu. Trường chỉ xuất hiện ở hàng sau vẫn được bổ sung vào tiêu đề; các hàng thiếu trường đó để ô trống.
Ở mỗi hàng, công cụ tìm giá trị tương ứng với từng cột. Trường thiếu hoặc có giá trị null trở thành ô rỗng. Những giá trị khác được đổi thành chuỗi: số và boolean giữ dạng văn bản gốc. Ở chế độ mặc định, đối tượng lồng nhau được làm phẳng thành các cột dạng a.b; mảng giá trị đơn giản được nối bằng dấu chấm phẩy và khoảng trắng. Ở chế độ giữ nguyên, đối tượng và mảng được ghi nguyên dạng JSON trong một ô.
Ô chỉ được bao bằng ngoặc kép khi chứa dấu phân cách, dấu ngoặc kép, ký tự xuống dòng hoặc khoảng trắng ở đầu/cuối ô; dấu ngoặc kép bên trong được nhân đôi. Hàng tiêu đề áp dụng cùng quy tắc bảo vệ, nên tên trường chứa dấu phẩy hoặc xuống dòng không còn làm lệch cột.
Cách dựng phần tử XML
Công cụ duyệt các trường và dùng tên trường làm tên thẻ. Giá trị đơn được đưa vào nội dung phần tử; đối tượng lồng nhau được duyệt tiếp để tạo phần tử con. Một trường chứa mảng tạo nhiều phần tử cùng tên, mỗi phần tử ứng với một phần tử mảng. Có tùy chọn đặt tên thẻ gốc và tên thẻ cho phần tử mảng, nhưng không có bước tự tạo schema theo yêu cầu hệ thống nhận.
Văn bản được ghép sau bước escape ký tự & < > và bước chuẩn hóa tên thẻ (ký tự không hợp lệ đổi thành dấu gạch dưới, tên bắt đầu bằng chữ số được thêm gạch dưới ở đầu). Vì vậy, đầu ra đúng cú pháp XML tốt hơn trước, nhưng vẫn chưa đồng nghĩa đúng schema của hệ thống nhận.
Giá trị rỗng và mảng được xử lý thế nào?
Trong XML, null tạo phần tử rỗng, trường chứa mảng rỗng cũng tạo một phần tử rỗng. Mảng tạo các phần tử lặp cùng tên, mỗi phần tử giữ nguyên giá trị của nó — kể cả mảng số, boolean hay chuỗi.
Các thẻ có tên chỉ gồm chữ số được thêm gạch dưới ở đầu thay vì bị loại. Mảng ở cấp gốc được bọc trong thẻ gốc, mỗi bản ghi là một phần tử item (có thể đổi tên trong tùy chọn nâng cao). Những khác biệt này vẫn khiến đầu ra không bảo toàn đầy đủ cấu trúc JSON (ví dụ kiểu dữ liệu gốc của XML luôn là văn bản).

Ví dụ chuyển đổi và cách nhận biết dữ liệu bị thay đổi
Danh sách bản ghi phẳng có cùng cột
Giả sử có hai mẫu sản phẩm, cùng các trường ten và so_luong. Mẫu A có 2 sản phẩm, Mẫu B có 0 sản phẩm. Theo quy tắc trong mã, phần CSV sau BOM là:
ten,so_luong
Mẫu A,2
Mẫu B,0
Đây là kết quả từ mã. Có một hàng tiêu đề và hai hàng dữ liệu. Số 0 vẫn được giữ thành chuỗi “0”, không bị coi là thiếu. Đơn vị sản phẩm là giả định của ví dụ; công cụ không tự thêm đơn vị vào ô.
Bản ghi thiếu trường hoặc xuất hiện trường mới
Giả sử bản ghi đầu có tên Mẫu A và giá 12000 đồng. Bản ghi sau có tên Mẫu B, thiếu giá nhưng thêm ghi chú “mới”. Tiêu đề nay gồm ten, gia và ghi_chu, nên kết quả là:
ten,gia,ghi_chu
Mẫu A,12000,
Mẫu B,,mới
Ô giá của Mẫu B rỗng vì thiếu trường. Ghi chú xuất hiện thành cột riêng vì cột được hợp nhất từ mọi hàng; ô ghi chú của Mẫu A rỗng. “Đồng” cũng không tự được thêm: con số 12000 chỉ có ý nghĩa tiền tệ nhờ quy ước dữ liệu đã nêu.
Đối tượng lồng nhau và các loại mảng
Với một trường ho_so chứa đối tượng có tên Mẫu A và nhóm A, CSV ở chế độ mặc định tạo hai cột ho_so.ten và ho_so.nhom; ở chế độ giữ nguyên, CSV tạo một ô mang nội dung JSON của đối tượng. XML lại có thể giữ cấu trúc phần tử con:
<ho_so><ten>Mẫu A</ten><nhom>A</nhom></ho_so>
Nếu trường muc chứa hai đối tượng có tên A và B, bên trong root sẽ có hai phần tử muc liên tiếp, mỗi phần tử chứa một phần tử ten. Không có lớp bao riêng cho toàn bộ danh sách muc.
Ngược lại, nếu trường diem chứa mảng số 2 và 3, với đơn vị điểm do ví dụ quy ước, XML tạo hai phần tử diem chứa 2 và 3. Mảng giá trị đơn nay được giữ nguyên giá trị, giống mảng đối tượng.
Chuỗi chứa ký tự đặc biệt khi xuất XML
Giả sử trường nhan chứa chuỗi A & B. Công cụ mã hóa dấu & thành & theo quy tắc XML, nên phần tử tạo ra hợp lệ về cú pháp. Việc hệ thống nhận từ chối (nếu có) thường do schema hoặc tên thẻ đã chuẩn hóa, không còn do ký tự chưa escape.
Khi nào nên dùng CSV và khi nào nên dùng XML?
Chuẩn bị dữ liệu dạng bảng
Nên chọn CSV khi dữ liệu là danh sách bản ghi phẳng, cùng tập trường, chẳng hạn danh mục sản phẩm có mã, tên và số lượng. Dạng này thuận tiện để đưa vào phần mềm bảng tính hoặc quy trình nhập dữ liệu theo hàng cột. Nếu cần giữ mã “0012”, hãy nhập CSV với cột mã được xác định là văn bản ở phần mềm nhận. Việc đó không phải chức năng của bộ chuyển đổi.
Trao đổi dữ liệu có cấu trúc phần tử
XML có thể phù hợp khi dữ liệu cần thể hiện quan hệ cha con bằng phần tử, ví dụ hồ sơ chứa thông tin nhóm. Tuy nhiên, phải đối chiếu tên thẻ, lớp bao và cấu trúc với yêu cầu nơi nhận. Nếu hệ thống yêu cầu schema cụ thể, việc công cụ tạo phần tử root không đủ để xác nhận tương thích. Với mảng giá trị đơn hoặc ký tự đặc biệt, cần kiểm tra kỹ trước khi sử dụng.
Chuẩn bị dữ liệu trước khi chuyển
Trước khi xuất CSV, nên thống nhất tập trường của các bản ghi; công cụ hợp nhất cột từ mọi hàng, nên trường chỉ cần xuất hiện ở ít nhất một bản ghi là được giữ. Đồng thời xác định đơn vị đo, cách biểu diễn giá trị thiếu và những trường cần giữ dưới dạng văn bản. Công cụ không tự thực hiện các quyết định dữ liệu này.
Khi cần quan sát cấu trúc trước khi lựa chọn định dạng, có thể tham khảo công cụ làm đẹp và định dạng JSON. Đây là nhu cầu hỗ trợ đọc dữ liệu, không có nghĩa hai công cụ tự tích hợp hay việc định dạng sẽ sửa được mọi lỗi chuyển đổi.

Những giới hạn cần kiểm tra trước khi dùng tệp kết quả
Nguy cơ mất trường và thay đổi giá trị
Hãy đối chiếu các trường cần giữ với tệp gốc, đặc biệt là trường xuất hiện muộn và dữ liệu lồng nhau. Trong CSV, null, trường thiếu và chuỗi rỗng có thể trở nên không phân biệt được. Trong XML, mảng giá trị đơn nay được giữ, nhưng tên trường đã chuẩn hóa (ký tự lạ thành gạch dưới, tên bắt đầu bằng số thêm gạch dưới) có thể khác tên gốc và lệch schema.
Số nguyên lớn còn có rủi ro riêng: bước đọc JSON bằng JavaScript có thể mất độ chính xác nếu số vượt phạm vi biểu diễn chính xác. Đây là thay đổi có thể xảy ra trước khi xuất, khác với việc bảng tính chỉ đổi cách hiển thị số dài.
Khả năng tương thích với bảng tính và hệ thống XML
BOM hỗ trợ mã hóa nhưng không bảo đảm Excel chọn đúng cột, giữ số 0 đầu hay hiểu đúng ngày tháng. Cần kiểm tra số dài và kiểu ô sau khi nhập. Tiêu đề CSV có ký tự phân cách cũng có thể làm lệch cột. Ngoài ra, công cụ không trung hòa công thức bảng tính; bao giá trị trong ngoặc kép không bảo đảm nội dung sẽ không được diễn giải thành công thức.
Với XML, cần kiểm tra ký tự đặc biệt, tên thẻ và schema tại hệ thống nhận. Thông báo thành công không thay thế các kiểm tra này.
Kết quả cũ, thông báo lỗi và phạm vi quyền riêng tư
Khi gặp lỗi, kết quả cũ được ẩn và thông báo lỗi nêu rõ nguyên nhân (JSON không hợp lệ kèm thông điệp của trình phân tích, JSON rỗng, hoặc JSON không phải đối tượng/mảng đối tượng). Khi đổi nguồn dữ liệu hoặc định dạng, kết quả được tính lại ngay. Thông báo tải thành công chỉ phản ánh thao tác được kích hoạt, không xác nhận thiết bị đã lưu xong.
Công cụ đọc và tạo tệp bằng API trình duyệt, không thể hiện lời gọi API chuyển đổi. Tuy nhiên, chưa có bằng chứng về toàn bộ mã trên trang, hoạt động theo dõi hay chính sách lưu giữ. Không thể từ đó cam kết toàn trang không truyền hoặc lưu dữ liệu.

Chuyển đổi định dạng khác gì làm đẹp và chuẩn hóa dữ liệu?
Chuyển đổi định dạng thay cách biểu diễn dữ liệu để phục vụ một môi trường sử dụng khác. Trong công cụ này, đối tượng và mảng JSON được chuyển thành văn bản CSV hoặc XML theo quy tắc cố định. Quá trình đó có thể thay đổi cấu trúc, làm mất trường hoặc biến giá trị thành chuỗi không còn đủ ý nghĩa ban đầu.
Làm đẹp chủ yếu giúp văn bản dễ đọc nhờ sắp xếp khoảng trắng, xuống dòng hoặc thụt lề. Văn bản trông rõ ràng hơn không đồng nghĩa đã được làm phẳng, thống nhất trường hay xử lý ký tự đặc biệt cho XML. Một JSON dễ đọc vẫn có thể không phù hợp với đầu ra dạng bảng.
Chuẩn hóa dữ liệu là thống nhất những quy ước như tập trường, kiểu giá trị, đơn vị hoặc cách biểu diễn dữ liệu thiếu. Đây là công việc mang tính quyết định nghiệp vụ. Công cụ không cung cấp một quy trình chuẩn hóa tùy chỉnh để người dùng thiết lập các quy tắc đó.
Cũng không nên coi chuyển đổi là thao tác có thể đảo ngược hoàn toàn. Nếu null đã thành ô rỗng hoặc đối tượng đã thành chuỗi JSON hay đã làm phẳng, chỉ từ tệp kết quả không thể chắc chắn khôi phục dữ liệu ban đầu. Công cụ không có chức năng chuyển ngược CSV/XML về JSON.
Câu hỏi thường gặp
Vì sao CSV bị thiếu cột có trong một số bản ghi JSON?
Bản mới không còn thiếu cột kiểu này: công cụ hợp nhất tên cột từ mọi bản ghi, nên trường xuất hiện ở bản ghi thứ hai hoặc muộn hơn vẫn được thêm vào CSV. Cột được tạo nhưng trường bị thiếu ở một hàng vẫn trở thành ô rỗng, nên vẫn nên kiểm tra các hàng còn lại có giá trị tương ứng hay không.
Vì sao mở CSV trong Excel vẫn bị gộp cột hoặc đọc sai tiếng Việt?
BOM chỉ hỗ trợ nhận diện mã hóa, không quyết định cách Excel phân tách cột. Công cụ xuất CSV bằng dấu phẩy theo mặc định, nhưng có thể đổi dấu phân cách trong Tùy chọn nâng cao; trong khi cách mở tệp của phần mềm có thể phụ thuộc thiết lập vùng hoặc lựa chọn nhập dữ liệu. Nếu bảng bị gộp cột, hãy kiểm tra dấu phân cách trong quy trình nhập CSV. Nếu tiếng Việt hiển thị sai, kiểm tra lựa chọn UTF-8. Chưa thể bảo đảm mọi phiên bản Excel đều tự nhận đúng.
Kết quả hiển thị có bị cắt không, và tệp tải xuống có đầy đủ không?
Không bị cắt: kết quả hiển thị toàn bộ nội dung đã tạo trong ô cuộn, và tệp tải xuống chứa đúng nội dung đó (riêng CSV được thêm BOM UTF-8). Dòng văn bản không nhất thiết là một bản ghi — một ô CSV chứa ký tự xuống dòng có thể chiếm nhiều dòng — nên không nên dùng số dòng để suy ra số hồ sơ.
Có thể giữ nguyên đối tượng và mảng lồng nhau khi xuất CSV không?
Có, bằng tùy chọn giữ nguyên trong Tùy chọn nâng cao: đối tượng và mảng được ghi nguyên dạng JSON trong một ô. Ở chế độ mặc định, đối tượng được làm phẳng thành cột dạng a.b và mảng giá trị đơn giản được nối bằng dấu chấm phẩy. XML thể hiện cấu trúc con tốt hơn CSV, nhưng cũng không bảo toàn kiểu dữ liệu gốc (mọi nội dung XML đều là văn bản).
Vì sao XML báo chuyển đổi thành công nhưng hệ thống nhận vẫn từ chối?
Thông báo đó cho biết công cụ đã tạo được văn bản, không xác nhận tài liệu đúng yêu cầu nơi nhận. Dấu & hoặc dấu < nay đã được escape, nên nguyên nhân thường còn lại là tên thẻ đã chuẩn hóa khác schema hoặc cấu trúc khác yêu cầu. Cần kiểm tra tài liệu bằng quy trình của nơi nhận và đối chiếu yêu cầu phần tử, thay vì chỉ dựa vào trạng thái trên giao diện.
Tệp dưới 5MB vẫn báo lỗi JSON thì cần kiểm tra điều gì?
Dung lượng hợp lệ chỉ là một điều kiện. Hãy kiểm tra tệp có nội dung JSON thực sự, không rỗng, không có chú thích hoặc dấu phẩy thừa. Ngưỡng chính xác là 5.242.880 byte, nhưng vượt qua bước này không chứng minh cấu trúc phù hợp để chuyển đổi. Thông báo lỗi JSON còn có thể bao gồm lỗi phát sinh khi xử lý dữ liệu, chẳng hạn dạng phần tử không phù hợp. Vì vậy, cần xem cả cú pháp lẫn cấu trúc, không chỉ đuôi tệp.
Có nên dùng công cụ để chuyển tệp chứa dữ liệu nhạy cảm không?
Không nên đưa dữ liệu nhạy cảm thật vào trang khi chưa hiểu chính sách và môi trường triển khai. Công cụ dùng trình duyệt để đọc tệp và tạo nội dung tải xuống, nhưng thông tin đó không đủ chứng minh toàn trang không truyền hoặc lưu dữ liệu. Với thông tin cá nhân, dữ liệu khách hàng hay bí mật nội bộ, nên dùng dữ liệu đã ẩn danh hoặc môi trường được tổ chức cho phép. Không có căn cứ để đưa ra cam kết bảo mật tuyệt đối.
