Chuyển đổi từ JSON sang XML
Dán một tài liệu JSON và nhận lại XML tương đương với tên phần tử gốc mà bạn chọn, một chiến lược nhất quán cho mảng (các phần tử lặp lại hoặc một cấu trúc bao bọc), khai báo XML tùy chọn cùng phần thụt lề gọn gàng. Rất hữu ích khi một hệ thống cũ yêu cầu XML trong khi dữ liệu nguồn của bạn được lưu ở dạng JSON.
Cách chuyển đổi JSON sang XML
-
1
Dán JSON
Đối tượng hoặc mảng ở cấp cao nhất. Bạn sẽ đặt tên cho phần tử gốc.
-
2
Đặt tên cho phần tử gốc
XML yêu cầu một phần tử gốc duy nhất. Giá trị mặc định là `<root>`; hãy đặt một tên có ý nghĩa như `<users>` hoặc `<response>`.
-
3
Chọn chiến lược cho mảng
"Phần tử lặp lại" (mỗi mục trong mảng trở thành một `<item>` cùng cấp) hoặc "bao bọc" (mảng được đặt bên trong một phần tử bao bọc có tên).
-
4
Sao chép XML
Khai báo XML tùy chọn, phần thụt lề đúng cách và các giá trị được thoát thực thể (entity-escape) cho `<`, `>`, `&` và dấu ngoặc kép.
Ví dụ: các phần tử lặp lại
Nội dung đầu vào:
{ "users": [ { "name": "Alice" }, { "name": "Bob" } ] }
Kết quả đầu ra:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<users>
<name>Alice</name>
</users>
<users>
<name>Bob</name>
</users>
</root>
Ví dụ: phần tử bao bọc mảng
Cùng dữ liệu đầu vào với chiến lược “bao bọc mảng trong <item>”:
<root>
<users>
<item>
<name>Alice</name>
</item>
<item>
<name>Bob</name>
</item>
</users>
</root>
Xác định kiểu dữ liệu
| JSON | XML |
|---|---|
| chuỗi | nội dung văn bản, đã được mã hóa theo chuẩn thực thể |
| số nguyên / số thập phân | nội dung văn bản (không có ghi chú kiểu XML) |
| boolean | true / false dưới dạng văn bản |
| null | phần tử trống (<foo/>) hoặc bị bỏ qua |
| mảng | các phần tử lặp lại hoặc cấu trúc bao bọc cùng các mục |
| đối tượng | phần tử lồng có các phần tử con |
Thuộc tính và phần tử
XML phân biệt giữa các thuộc tính (<user id="1">) và các phần tử con (<user><id>1</id></user>). Bộ chuyển đổi mặc định sử dụng phần tử – chúng không làm mất dữ liệu khi chuyển đổi qua lại. Nếu XML ở bước sau yêu cầu thuộc tính, hãy áp dụng quy ước tiền tố cho khóa:
- Khóa JSON
@idtrở thành thuộc tính XMLid="..."trên phần tử cha. - Khóa JSON
#texttrở thành nội dung văn bản của phần tử cha.
Các quy ước này bắt nguồn từ các phương thức ánh xạ của BadgerFish và Parker – hai tiêu chuẩn phổ biến nhất để chuyển đổi từ JSON sang XML.
Quy tắc thoát (escape)
<-><>->>&->&"→"(trong các giá trị thuộc tính)'→'(tùy chọn) Các byte trong định dạng UTF-8 được giữ nguyên và được xác định trong phần mở đầu XML.
Các lỗi phổ biến
- Mảng JSON ở cấp độ gốc: XML yêu cầu phải có một phần tử gốc duy nhất. Bộ chuyển đổi sẽ đóng gói mảng này dưới dạng định dạng
<root>(hoặc bất kỳ tên nào bạn chọn). - Các khóa số: JSON
{"1": "a"}là hợp lệ; tên các phần tử XML không được bắt đầu bằng chữ số. Bộ chuyển đổi sẽ thêm dấu gạch dưới vào chữ số để tạo tiền tố (ví dụ:_1) hoặc cho phép bạn định nghĩa mối tương ứng tùy chỉnh. - Mảng hỗn hợp:
[1, "two", { "x": true }]không có bản ánh xạ rõ ràng. Thông thường, điều này có nghĩa là dữ liệu JSON cần được chuẩn hóa trước khi chuyển đổi. – Các tài liệu có dung lượng lớn: XML rất chi tiết; một tệp JSON dung lượng 10 MB có thể trở thành một tệp XML lên tới 20–30 MB. Cần xem xét phương pháp chuyển đổi theo luồng đối với các dữ liệu có kích thước cực lớn.
Câu hỏi thường gặp
Theo quy định, XML yêu cầu chỉ một phần tử gốc duy nhất. Nếu dữ liệu JSON của bạn là một mảng hoặc có nhiều khóa cấp cao nhất, công cụ chuyển đổi sẽ bao tất cả các thành phần vào một phần tử gốc mà bạn có thể đặt tên tùy ý (tên mặc định là <root>).
Đúng vậy. Hãy sử dụng quy ước tiền tố @ trong các khóa JSON của bạn (ví dụ: "@id": 1); những khóa này sẽ trở thành thuộc tính, trong khi các khóa khác vẫn giữ nguyên tư cách là phần tử con. Cách thức này phù hợp với cách ánh xạ của BadgerFish.
Có hai chiến lược: các phần tử cùng cấp lặp lại (mỗi mục lấy khóa cha làm thẻ) hoặc một phần tử bao bọc chứa các phần tử <item> bên trong. Hãy chọn cách phù hợp với lược đồ XML mà bạn đang nhắm tới.
Không. Bộ chuyển đổi sẽ xuất thông tin khai báo XML (<?xml version="1.0"?>), nhưng không xuất loại dữ liệu (DOCTYPE). Đối với các file XML yêu cầu tham chiếu DTD hoặc XSD, hãy thêm chúng thủ công sau khi hoàn thành quá trình chuyển đổi.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bảng tham khảo phím tắt
Tìm phím tắt mặc định theo tài liệu của VS Code, Chrome và Bash dùng GNU Readline trên macOS, Windows và Linux.
Bảng tra cứu nhanh Markdown
Tài liệu Markdown thực dụng với bản xem trước thực tế và ví dụ có thể sao chép cho tiêu đề, danh sách, bảng, mã, liên kết, hình ảnh và cú pháp GFM.
Trình định dạng HTML
Định dạng HTML cục bộ trong trình duyệt với thụt lề hai hoặc bốn khoảng trắng. HTML không được tải lên hoặc xác thực.
Bảng Tra Regex
Tài liệu tham chiếu biểu thức chính quy có thể tìm kiếm cho JavaScript, PCRE2/PHP, Python re và .NET. So sánh mã thông báo, cú pháp riêng của máy, neo, nhóm, lookaround và cờ.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- JSON till XML [SV]
- JSON إلى XML [AR]
- JSON vers XML [FR]
- JSON에서 XML로 [KO]
- แปลง JSON เป็น XML [TH]
- JSON zu XML [DE]
- JSON ke XML [ID]
- JSON naar XML [NL]
- JSONからXMLへ [JA]
- JSON a XML [ES]
- JSON do XML [PL]
- JSON para XML [PT]
- JSON'ten XML'e [TR]
- JSON 到 XML [ZH]
- JSON to XML [EN]
- JSON in XML [IT]
- Преобразование JSON в XML [RU]