Chuyển đổi XML ↔ JSON
Chuyển tài liệu XML sang JSON và ngược lại, kèm cả thuộc tính
Về công cụ này
Chuyển XML sang JSON để đưa những phản hồi SOAP đời cũ, nguồn RSS hay tệp POM của Maven vào JavaScript, jq hoặc một API thuần JSON — hoặc đi chiều ngược lại và sinh XML từ dữ liệu JSON. Thuộc tính được giữ lại: chúng trở thành khóa "@_tên", còn phần văn bản đi kèm thuộc tính sẽ nằm dưới "#text", nên không thông tin nào lặng lẽ biến mất.
Hai định dạng vốn bất đồng ở những điểm căn bản, và công cụ này chọn cách xử lý thực dụng đã thành chuẩn: các phần tử anh em trùng tên gộp lại thành mảng JSON, những giá trị trông như số thì thành số, còn không gian tên đi theo như một phần của tên phần tử. Với tài liệu thông thường, vòng XML → JSON → XML vẫn giữ được cấu trúc lẫn nội dung.
Cả hai chiều đều chạy cục bộ trong trình duyệt của bạn. Dán một nguồn hóa đơn hay một phản hồi API vào mà chẳng có gì đi đâu cả.
Câu hỏi thường gặp
- Vì sao một số giá trị trả về là số thay vì chuỗi?
- Bộ phân tích nhận ra văn bản dạng số và chuyển đổi nó, đúng ý phần lớn bên tiêu thụ. Nhưng hãy coi chừng các mã có số 0 đứng đầu (mã sản phẩm, số điện thoại) — nếu điều đó quan trọng với dữ liệu của bạn, hãy thêm dấu nháy sau khi chuyển, hoặc xem kết quả chỉ như điểm khởi đầu.
- Các phần tử lặp lại được xử lý thế nào?
- Từ hai phần tử anh em cùng tên trở lên sẽ thành một mảng JSON dưới khóa đó. Nếu chỉ xuất hiện một lần thì nó vẫn là đối tượng thường — sự bất đối xứng ấy vốn nằm trong bản chất phép ánh xạ, nên mã tiêu thụ JSON nên chịu được cả hai hình dạng hoặc chuẩn hóa trước.
- Khóa @_ và #text nghĩa là gì?
- @_ đánh dấu thứ vốn là thuộc tính XML, còn #text mang phần văn bản của phần tử khi nó đi kèm thuộc tính. Đưa đúng quy ước đó ngược lại theo chiều JSON → XML sẽ dựng lại được tài liệu ban đầu.
- Vì sao chiều JSON → XML từ chối mảng ở cấp cao nhất của tôi?
- Một tài liệu XML phải có đúng một phần tử gốc, mà mảng trần thì chẳng có phần tử gốc nào. Hãy bọc mảng vào một đối tượng — {"items": {"item": [...]}} — rồi công cụ sẽ sinh ra một tài liệu đúng cấu trúc.