ToolDeck

JSON sang XML

Chuyển đổi JSON sang định dạng XML

Thử ví dụ

Nhập JSON

Xuất XML

Chạy cục bộ · An toàn để dán thông tin bí mật
XML sẽ xuất hiện tại đây…

Chuyển đổi JSON sang XML là gì?

JSON (JavaScript Object Notation) và XML (eXtensible Markup Language) là hai định dạng trao đổi dữ liệu phổ biến nhất trong phát triển phần mềm. JSON sử dụng cặp khóa-giá trị và mảng với cú pháp gọn nhẹ, trong khi XML bao bọc dữ liệu trong các thẻ mở và đóng kèm thuộc tính tùy chọn. Chuyển đổi JSON sang XML có nghĩa là dịch các kiểu nguyên thủy cấu trúc của JSON — đối tượng, mảng, chuỗi, số, giá trị boolean và null — thành một tài liệu XML hợp lệ với cấu trúc lồng nhau tương ứng.

XML vẫn là định dạng bắt buộc trong nhiều hệ thống doanh nghiệp, API chính phủ, dịch vụ web SOAP và các tiêu chuẩn ngành như HL7 (y tế), FpML (tài chính) và XBRL (báo cáo tài chính). Khi ứng dụng của bạn tạo ra JSON nhưng hệ thống phía sau lại yêu cầu XML, một công cụ chuyển đổi JSON sang XML sẽ xử lý việc dịch mà không cần tái cấu trúc thủ công. Quá trình chuyển đổi tuân theo các quy tắc ánh xạ có thể dự đoán được: đối tượng JSON trở thành phần tử XML, các mục trong mảng trở thành các phần tử anh em lặp lại, và các giá trị nguyên thủy trở thành nút văn bản.

Không có một RFC hay tiêu chuẩn W3C nào định nghĩa cách JSON ánh xạ sang XML. Các thư viện khác nhau tạo ra đầu ra khác nhau cho cùng một đầu vào. Quy ước phổ biến nhất (được công cụ này sử dụng) bao bọc toàn bộ tài liệu trong một phần tử gốc có thể cấu hình, chuyển đổi mỗi khóa JSON thành phần tử con XML, và biểu diễn các mục trong mảng dưới dạng các phần tử lặp lại cùng tên thẻ. Hiểu các quy tắc ánh xạ này rất quan trọng khi hệ thống nhận áp dụng một XML schema (XSD) cụ thể.

Tại sao sử dụng công cụ chuyển đổi JSON sang XML trực tuyến?

Viết XML thủ công từ nguồn JSON rất tẻ nhạt và dễ gây lỗi. Thẻ không khớp, phần tử đóng bị quên, và cấu trúc lồng nhau sai sẽ tạo ra tài liệu không qua được kiểm tra schema. Một công cụ chuyển đổi xử lý việc dịch cấu trúc một cách tự động.

Chuyển đổi tức thì trong trình duyệt
Dán JSON, nhận XML hợp lệ trong vài mili giây. Không cần gọi máy chủ, không cần cài đặt CLI, không cần cài đặt thư viện. Quá trình chuyển đổi chạy hoàn toàn bằng JavaScript trên thiết bị của bạn.
🔒
Bảo mật dữ liệu nhạy cảm
Đầu vào JSON của bạn không bao giờ rời khỏi tab trình duyệt. Toàn bộ quá trình phân tích cú pháp và tạo XML đều diễn ra phía client, giúp bạn an toàn khi chuyển đổi các tải trọng chứa API key, token hoặc dữ liệu sản xuất.
📋
Không cần tài khoản hay đăng nhập
Mở trang, dán JSON và sao chép đầu ra XML. Không có biểu mẫu đăng ký, xác minh email hay giới hạn sử dụng nào đứng giữa bạn và dữ liệu đã chuyển đổi.
🌳
Xử lý cấu trúc lồng nhau tự động
Các đối tượng lồng nhau sâu, mảng hỗn hợp và giá trị null đều được chuyển đổi chính xác. Công cụ giữ nguyên toàn bộ cấu trúc phân cấp của đầu vào JSON trong cây XML kết quả.

Các trường hợp sử dụng JSON sang XML

Tích hợp dịch vụ web SOAP
REST API của bạn trả về JSON, nhưng endpoint SOAP của đối tác yêu cầu nội dung request dạng XML. Chuyển đổi tải trọng JSON sang XML trước khi bọc trong phong bì SOAP.
Trao đổi dữ liệu doanh nghiệp
Các hệ thống ERP và CRM kế thừa thường chỉ chấp nhận nhập liệu dạng XML. Chuyển đổi các bản xuất JSON từ công cụ hiện đại sang luồng XML phù hợp với schema mong đợi.
Cấu hình pipeline CI/CD
Một số công cụ build (Maven, Ant, MSBuild) sử dụng tệp cấu hình XML. Tạo các đoạn cấu hình XML từ tệp tham số JSON trong quá trình build tự động.
Chuẩn bị dữ liệu kiểm thử QA
Tạo các fixture XML kiểm thử từ tập dữ liệu JSON. Nhanh chóng tạo ra tài liệu XML hợp lệ để kiểm thử bộ phân tích XML, các phép biến đổi XSLT hoặc truy vấn XPath.
Kết nối định dạng trong pipeline dữ liệu
Các pipeline ETL nhận XML có thể nhận dữ liệu từ các API tạo ra JSON. Chuyển đổi kết quả JSON trung gian sang XML trước khi nạp vào giai đoạn xử lý dựa trên XML.
Học cấu trúc XML
Sinh viên học XML có thể dán các cấu trúc JSON quen thuộc và xem biểu diễn XML tương đương. Điều này giúp hình dung cụ thể về lồng thẻ, phân cấp phần tử và cấu trúc tài liệu.

Quy tắc ánh xạ JSON sang XML

Do không có tiêu chuẩn chung nào quy định việc chuyển đổi JSON sang XML, các công cụ khác nhau tạo ra đầu ra khác nhau. Bảng dưới đây hiển thị các quy ước ánh xạ được sử dụng bởi công cụ này và hầu hết các thư viện phổ biến (js2xmlparser, xmlbuilder, fast-xml-parser). Quy ước phần tử anh em lặp lại cho mảng trở nên phổ biến vì nó phản ánh cách XML schema mô hình hóa tự nhiên các tập hợp — mỗi mục là phần tử hạng nhất chứ không phải con được bọc — và tích hợp gọn gàng với truy vấn XPath và phép biến đổi XSLT.

JSON TypeJSON ExampleXML Output
Object{"name": "Alice"}<name>Alice</name>
Nested object{"user": {"age": 30}}<user><age>30</age></user>
Array{"colors": ["red", "blue"]}<colors>red</colors><colors>blue</colors>
String"hello"<root>hello</root>
Number42<root>42</root>
Booleantrue<root>true</root>
Nullnull<root/>
Empty object{}<root/>
Empty array[](no child elements)

Ví dụ code

Dưới đây là các đoạn code có thể chạy để chuyển đổi JSON sang XML trong ba môi trường. Mỗi ví dụ tạo ra XML hợp lệ từ một đối tượng JSON mẫu.

JavaScript (Node.js)
import { create } from 'xmlbuilder2';

const json = {
  order: {
    id: 1024,
    items: [
      { sku: "A1", qty: 2 },
      { sku: "B3", qty: 1 }
    ],
    shipped: false
  }
};

const xml = create({ version: '1.0' })
  .ele(json)
  .end({ prettyPrint: true });

console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// →   <id>1024</id>
// →   <items>
// →     <sku>A1</sku>
// →     <qty>2</qty>
// →   </items>
// →   <items>
// →     <sku>B3</sku>
// →     <qty>1</qty>
// →   </items>
// →   <shipped>false</shipped>
// → </order>
Python
import json
import xmltodict

data = {
    "order": {
        "id": 1024,
        "items": [
            {"sku": "A1", "qty": 2},
            {"sku": "B3", "qty": 1}
        ],
        "shipped": False
    }
}

# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# →   <id>1024</id>
# →   <items>
# →     <sku>A1</sku>
# →     <qty>2</qty>
# →   </items>
# →   <items>
# →     <sku>B3</sku>
# →     <qty>1</qty>
# →   </items>
# →   <shipped>false</shipped>
# → </order>
Go
package main

import (
	"encoding/json"
	"encoding/xml"
	"fmt"
)

type Item struct {
	SKU string `json:"sku" xml:"sku"`
	Qty int    `json:"qty" xml:"qty"`
}

type Order struct {
	XMLName xml.Name `xml:"order"`
	ID      int      `json:"id" xml:"id"`
	Items   []Item   `json:"items" xml:"items"`
	Shipped bool     `json:"shipped" xml:"shipped"`
}

func main() {
	raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`

	var order Order
	json.Unmarshal([]byte(raw), &order)

	out, _ := xml.MarshalIndent(order, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <order>
	// →   <id>1024</id>
	// →   <items>
	// →     <sku>A1</sku>
	// →     <qty>2</qty>
	// →   </items>
	// →   ...
}

Câu hỏi thường gặp

Chuyển đổi JSON sang XML có mất dữ liệu không?
Về mặt cấu trúc thì không — mọi giá trị JSON đều ánh xạ sang phần tử XML hoặc nút văn bản. Tuy nhiên, XML không phân biệt tự nhiên giữa số, boolean và chuỗi như JSON. Giá trị 42 trong JSON trở thành nội dung văn bản "42" trong XML. Nếu hệ thống nhận dựa vào khai báo kiểu trong XML Schema (XSD), nó có thể khôi phục kiểu gốc trong quá trình phân tích cú pháp. Nếu không có schema, thông tin kiểu thực tế bị mất trong tài liệu đã chuyển đổi.
Mảng JSON được chuyển đổi sang XML như thế nào?
Mỗi mục trong mảng trở thành phần tử XML anh em có cùng tên thẻ. Ví dụ, mảng JSON "colors": ["red", "blue"] tạo ra hai phần tử: &lt;colors&gt;red&lt;/colors&gt; và &lt;colors&gt;blue&lt;/colors&gt;. Một số công cụ chuyển đổi bọc mảng trong phần tử cha (ví dụ: &lt;colorsList&gt;), nhưng cách tiếp cận phần tử anh em lặp lại phổ biến hơn và phù hợp với quy ước được sử dụng bởi JAXB, Jackson và fast-xml-parser.
Giá trị null được xử lý như thế nào trong quá trình chuyển đổi?
Giá trị null trong JSON thường được chuyển đổi thành phần tử XML rỗng — ví dụ: "middle_name": null trở thành &lt;middle_name/&gt;. Một số thư viện thêm thuộc tính xsi:nil="true" để biểu thị null tường minh, điều này hữu ích khi hệ thống đích xác thực theo schema XSD. Công cụ này mặc định xuất ra phần tử rỗng tự đóng.
Có thể chuyển đổi XML ngược lại sang JSON không?
Có, nhưng quá trình chuyển đổi khứ hồi không phải lúc nào cũng đối xứng. Các tính năng của XML như thuộc tính, chỉ thị xử lý, chú thích, nội dung hỗn hợp và không gian tên không có tương đương trực tiếp trong JSON. Chuyển đổi XML sang JSON rồi ngược lại có thể tạo ra tài liệu có cấu trúc khác. Nếu bạn cần chuyển đổi XML sang JSON, hãy dùng công cụ XML sang JSON chuyên dụng có khả năng giữ nguyên thuộc tính và không gian tên.
Làm thế nào để xử lý các khóa JSON không phải là tên phần tử XML hợp lệ?
Tên phần tử XML không thể bắt đầu bằng chữ số, chứa dấu cách, hoặc bao gồm hầu hết các ký tự đặc biệt. Nếu JSON của bạn có khóa như "2024-data" hoặc "first name", công cụ chuyển đổi phải làm sạch tên — thường bằng cách thêm dấu gạch dưới ở đầu hoặc thay thế ký tự không hợp lệ bằng dấu gạch dưới. Kiểm tra đầu ra của công cụ chuyển đổi và điều chỉnh tên khóa trong JSON nguồn nếu XML kết quả cần qua xác thực XSD.
Công cụ này xử lý được tệp JSON tối đa bao nhiêu?
Công cụ chuyển đổi chạy trong engine JavaScript của trình duyệt, vì vậy giới hạn thực tế phụ thuộc vào bộ nhớ khả dụng. Hầu hết các trình duyệt hiện đại xử lý tài liệu JSON lên đến 50-100 MB mà không gặp vấn đề. Với tệp lớn hơn, hãy dùng công cụ chuyển đổi streaming như xmltodict của Python hoặc công cụ dòng lệnh xử lý dữ liệu theo từng phần thay vì tải toàn bộ vào bộ nhớ.
Đầu ra XML có hợp lệ không?
Đầu ra luôn là XML hợp quy — các thẻ được lồng đúng cách, ký tự đặc biệt được thoát, và tài liệu có một phần tử gốc duy nhất. Liệu đầu ra có hợp lệ hay không còn phụ thuộc vào schema đích (XSD hoặc DTD). Tính hợp quy là đảm bảo về mặt cấu trúc; tính hợp lệ đòi hỏi tên phần tử, thứ tự lồng nhau và kiểu nội dung phải phù hợp với định nghĩa schema cụ thể.