CodeKitHub
Công cụ JSON

Công cụ chuyển đổi JSON ↔ XML

Cập nhật lần cuối:

Công cụ này chuyển đổi JSON sang XML và XML sang JSON theo cả hai chiều, hoàn toàn ngay trong trình duyệt của bạn. Chọn chiều chuyển đổi, dán dữ liệu vào, và nhận kết quả với cấu trúc lồng nhau đúng để sao chép hoặc tải xuống — đối tượng lồng nhau trở thành phần tử lồng nhau, mảng trở thành các phần tử anh em lặp lại, còn thuộc tính XML được ánh xạ thành key `@_tên` trong JSON để đảm bảo chuyển đổi qua lại không mất dữ liệu.

Công Cụ Này Là Gì?

XML và JSON đều là các định dạng dữ liệu dạng cây, nhưng được dùng ở những nơi khác nhau: các API doanh nghiệp cũ, dịch vụ SOAP, feed RSS/Atom và nhiều định dạng cấu hình vẫn dùng XML, trong khi các REST API hiện đại và mã JavaScript hầu như chỉ dùng JSON. Công cụ này chuyển đổi qua lại giữa hai định dạng để bạn không phải tự tay viết một trong hai khi kết nối hệ thống cũ với hệ thống mới.

Việc chuyển đổi được xây dựng trực tiếp trên API DOMParser có sẵn của trình duyệt để đọc XML, và tuân theo cấu trúc được quy định trong đặc tả W3C XML 1.0 khi tạo ra XML — vì vậy XML được tạo ra luôn đúng chuẩn (well-formed), còn XML đầu vào cũng được phân tích theo đúng cách mà trình duyệt hay bất kỳ thư viện XML chuẩn nào sẽ làm.

Vì XML có những khái niệm mà JSON không có (thuộc tính, nội dung hỗn hợp giữa văn bản và phần tử, bắt buộc phải có duy nhất một phần tử gốc), còn JSON lại có những khái niệm mà XML không có (mảng, boolean, số nguyên bản), công cụ này áp dụng một quy ước phổ biến, được ghi chép rõ ràng: thuộc tính XML `name="value"` trở thành key JSON `"@_name": "value"`, nội dung văn bản của phần tử trở thành giá trị chuỗi trực tiếp (khi phần tử không có con hoặc thuộc tính) hoặc thành key `"#text"` đi kèm các thuộc tính khác, và các phần tử anh em lặp lại cùng tên sẽ trở thành một mảng JSON.

Tại Sao Nên Dùng?

  • Chuyển đổi hai chiều — chuyển JSON sang XML hoặc XML sang JSON ngay trên cùng một màn hình.
  • Xử lý lồng nhau chính xác — đối tượng JSON lồng nhau trở thành phần tử XML lồng nhau và ngược lại, ở bất kỳ độ sâu nào.
  • Mảng được ánh xạ thành các phần tử lặp lại — một mảng JSON nằm dưới một key sẽ trở thành từng ấy phần tử XML anh em cùng tên, và các thẻ XML lặp lại sẽ quay trở lại thành mảng JSON.
  • Giữ nguyên thuộc tính XML — sử dụng quy ước `@_tênThuộcTính`, nên dữ liệu thuộc tính không bị âm thầm mất đi.
  • Sao chép vào clipboard hoặc tải xuống dưới dạng file .json hoặc .xml.
  • Xử lý 100% phía client — mọi thứ bạn dán vào không hề được tải lên bất kỳ đâu.

Cách Sử Dụng

  1. Chọn chiều chuyển đổi: "XML → JSON" hoặc "JSON → XML".
  2. Dán dữ liệu của bạn vào ô nhập liệu.
  3. Nhấn "Convert".
  4. Xem lại kết quả, sau đó sao chép hoặc nhấn "Download" để lưu thành file.

Ví dụ

Đầu vào

{"user":{"name":"Alice","age":30}}

Đầu ra

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <name>Alice</name>
  <age>30</age>
</user>

Key JSON cấp cao nhất duy nhất ("user") trở thành phần tử gốc XML; nếu JSON có nhiều hơn một key cấp cao nhất, công cụ sẽ bọc toàn bộ nội dung trong một phần tử <root> vì XML yêu cầu đúng một phần tử gốc.

Mẹo thực tế

  • Chuyển một cấu hình XML cũ (chẳng hạn file cài đặt của một ứng dụng cũ) sang hệ thống hiện đại dựa trên JSON: dán XML vào, chuyển đổi, rồi chỉnh lại tên trường nếu cần.
  • Kiểm thử một endpoint SOAP hoặc XML-RPC từ JavaScript: chuyển payload request JSON của bạn sang XML tại đây trước khi gửi đi, hoặc chuyển phản hồi XML ngược lại thành JSON để dễ kiểm tra.
  • Nếu JSON của bạn dùng mảng cho dữ liệu mà XML sẽ biểu diễn dưới dạng phần tử lặp lại, hãy đảm bảo mảng đó được lồng dưới một key duy nhất trước (ví dụ {"items":{"item":[1,2,3]}}) thay vì một mảng trần ở cấp cao nhất, vì XML không thể có nhiều phần tử gốc.

Vì sao quy ước thuộc tính @_ lại quan trọng

Phần khó nhất khi chuyển đổi JSON/XML là các phần tử XML có thể mang đồng thời hai loại dữ liệu — thuộc tính và nội dung con — trong khi một đối tượng JSON thông thường chỉ có key và value. Nếu không có một quy ước để tách biệt hai loại này, một bộ chuyển đổi đơn giản sẽ hoặc là mất hoàn toàn thuộc tính, hoặc trộn lẫn chúng với các phần tử con theo cách không thể chuyển đổi ngược lại một cách đáng tin cậy. Quy ước tiền tố `@_name` (cũng được các thư viện phổ biến trong hệ sinh thái JavaScript sử dụng) giải quyết vấn đề này bằng cách cho thuộc tính một hình dạng key riêng biệt, rõ ràng, nhờ đó `<product id="42">Widget</product>` chuyển đổi qua lại gọn gàng thành `{"product":{"@_id":"42","#text":"Widget"}}` mà không làm mất id hay đoán sai giá trị nào tương ứng với đâu.

Câu Hỏi Thường Gặp

Điều gì xảy ra với JSON có nhiều hơn một key cấp cao nhất?

XML yêu cầu duy nhất một phần tử gốc, nên nếu đối tượng JSON của bạn có nhiều key cấp cao nhất (ví dụ {"a":1,"b":2}), kết quả sẽ được bọc trong một phần tử <root>: <root><a>1</a><b>2</b></root>. Nếu JSON của bạn chỉ có đúng một key cấp cao nhất, key đó sẽ trực tiếp trở thành tên phần tử gốc.

Thuộc tính XML được biểu diễn trong JSON như thế nào?

Một thuộc tính như <user id="7"> sẽ trở thành key "@_id": "7" trong đối tượng JSON kết quả. Đây là một quy ước phổ biến, được ghi chép rõ ràng (được các thư viện như fast-xml-parser sử dụng) giúp phân biệt thuộc tính với các phần tử con.

Các phần tử XML lặp lại có trở thành mảng JSON không?

Có. Nếu một phần tử có nhiều phần tử con cùng tên thẻ, ví dụ <items><item>1</item><item>2</item></items>, việc chuyển sang JSON sẽ cho ra {"items":{"item":["1","2"]}}. Chuyển JSON đó ngược lại thành XML sẽ tái tạo lại các phần tử <item> lặp lại đó.

Số và boolean có được giữ nguyên khi chuyển XML sang JSON không?

XML không có khái niệm số hay boolean thực sự — mọi thứ đều là văn bản — nên nội dung văn bản sẽ được trả về dưới dạng chuỗi JSON (ví dụ "30" thay vì 30). Nếu bạn cần kiểu số, bạn sẽ phải tự chuyển đổi các trường đó sau.

Dữ liệu của tôi có bị tải lên đâu không?

Không. Việc phân tích và chuyển đổi diễn ra hoàn toàn bằng JavaScript ngay trong trình duyệt của bạn, sử dụng API DOMParser có sẵn — không có gì được gửi đến máy chủ, nên bạn có thể yên tâm sử dụng với các file cấu hình riêng tư hoặc dữ liệu API nội bộ.

Công Cụ Liên Quan