UltKit

XML 轉 JSON 轉換器

把 SOAP 回應、RSS 摘要、設定檔或舊系統匯出檔中的資料,轉成 JavaScript、Python 或無程式碼工具能直接讀取的 JSON,不必自己動手寫解析器。

資料轉換器

或將CSV, TSV, TXT … 檔案拖曳到這裡 ·

每個檔案最大 95 MB· 最多 20 個檔案· 30 分鐘後刪除

輸出

檔案會在我們的伺服器上處理,並於 30 分鐘後刪除。

使用方式

  1. 1

    上傳 XML 檔案

    將 .xml 檔案拖曳到上傳區,每批最多 20 個,每個檔案最大 95 MB。每個檔案會各自獨立轉換。

  2. 2

    選擇易讀或精簡格式

    格式化排版預設為開啟,會將 JSON 縮排,方便閱讀與程式碼審查。若要取得最精簡的單行輸出作為 API 傳送內容,請在進階設定中關閉。

  3. 3

    轉換並使用 JSON

    按下轉換為 JSON,下載 .json 檔案,再載入到你的程式或工具中。

上傳 XML 後按下轉換為 JSON:元素會變成鍵,重複的元素會變成陣列,屬性則保留為加上 @ 前綴的鍵,因此標籤中的資訊不會遺失。

誰需要 XML 轉 JSON 轉換器

XML 1.0 於 1998 年 2 月成為 W3C 建議標準,之後十年間成為系統之間溝通的主要方式:SOAP 網路服務、RSS 與 Atom 訂閱源、Office 文件、銀行訊息、產品目錄。其中許多系統至今仍在運作。RFC 8259 規範的 JSON 則成為新式網頁 API 的主流,因為 JavaScript 不需要額外的解析函式庫就能讀取,而且幾乎能直接對應到各種語言的清單與字典。

因此需要轉換的人,通常是在銜接這兩個世代。前端開發者從付款或物流服務商收到 SOAP 回應,想要的是單純的物件。在 Zapier 或 Make 中的自動化建置者,要把供應商的 XML 訂閱源匯入以 JSON 運作最順暢的流程。資料工程師要從舊的 Java 應用程式遷移設定檔,或是學生需要把 RSS 訂閱源轉成 JSON 做課堂專題。大家想要的都是相同的結構,只是不要角括號。

XML 轉 JSON:標籤、屬性與文字如何對應

XML 輸入:一筆含屬性、一位客戶與兩個品項的訂單
<order id="A-77">
  <customer>林佳穎</customer>
  <total currency="EUR">59.90</total>
  <item sku="0042">檯燈</item>
  <item sku="0108">LED 燈泡</item>
</order>
上方訂單的每個部分在 JSON 中的呈現方式
XML 結構範例JSON 結果
根元素<order>頂層鍵 order
屬性id="A-77""@id": "A-77"
僅含文字的元素<customer>"customer": "林佳穎"
文字加屬性<total currency="EUR">59.90</total>{"@currency": "EUR", "#text": "59.90"}
重複的元素兩個 <item> 標籤"item": [ … , … ] 陣列
註解<!-- note -->會被捨棄;JSON 沒有註解

XML

Extensible Markup Language

XML 是 W3C 於 1998 年發布的結構化資料標記語言。它使用帶有屬性的巢狀標籤,並支援結構描述、命名空間與驗證,因此適合處理複雜文件。RSS 摘要、SVG、Office 文件、網站地圖,以及許多企業與政府的資料交換,都以它為基礎。XML 比 JSON 冗長,但所有程式語言與許多試算表工具都能讀取。

壓縮方式
–
透明度
–
動畫
–
推出年份
1998 · W3C
XML 轉檔工具

JSON

JavaScript 物件表示法

JSON 是用於結構化資料的輕量文字格式,由 Douglas Crockford 在 2000 年代初期推廣,並標準化為 RFC 8259 和 ECMA-404。它以簡單易讀的語法表示物件、陣列、字串、數字、布林值和 null。幾乎所有程式語言都把它當作網頁 API、設定檔和應用程式間資料交換的預設格式。它沒有內建註解、日期或結構描述,大型巢狀檔案不用檢視器很難閱讀。

壓縮方式
–
透明度
–
動畫
–
推出年份
2001 · Douglas Crockford
JSON 轉檔工具

當舊系統或企業系統的資料需要傳到網頁應用程式、指令碼或自動化工具時,就需要將 XML 轉成 JSON:JSON 在 JavaScript 中可原生解析,也能直接對應到 Python 的字典。

JSON 無法表示的 XML 功能

兩種格式都描述樹狀結構,但 XML 帶有 JSON 從未具備的額外功能。W3C 在 1999 年定義的命名空間,讓一份文件可混用 soap: 與 xsi: 等詞彙;在 JSON 中,它們只會保留在鍵名裡。註解與處理指令無處可放,會被捨棄。混合內容,也就是文字與子標籤交錯,例如 XHTML 段落中夾有一個粗體字,在 XML 中是合法的,但轉成 JSON 會很不好處理,所以文件型的 XML 更適合轉成 HTML 或 Markdown,而不是 JSON。

順序是比較細微的問題。XML 會保留同層元素的先後順序,結構描述也可能依賴這一點;而依標準,JSON 物件的鍵是無序的。重複的元素在陣列中會維持原本順序,涵蓋了大多數實際資料。如果 XML 是要放進試算表而不是程式碼的扁平記錄清單,XML 轉 Excel 能直接給你列與欄,而 XML 轉 CSV 則會產生可供資料庫匯入的檔案。

XML 轉 JSON 常見問題

為什麼同一個元素在某個檔案是陣列,在另一個檔案卻是物件?

轉換器只能依據文件中實際存在的內容處理。如果一筆訂單有三個 item 標籤,items 會變成陣列;如果只有一個,就沒有重複的項目,因此會變成單一物件。讀取這份 JSON 的程式碼應同時支援兩種形式,或在迴圈處理前先把單一物件包進陣列。

XML 屬性在 JSON 中會怎麼表示?

每個屬性都會變成在名稱前加上 @ 的鍵,所以 currency="EUR" 會變成 "@currency": "EUR"。當元素同時有屬性與文字時,文字會放在它們旁邊的 #text 鍵中。這個慣例可避免屬性與子元素同名時發生衝突。

XML 裡的數字會轉成 JSON 數值嗎?

XML 本身沒有資料型別;標籤中的 42 與 "42" 看起來完全相同。因此數值會以字串輸出,郵遞區號與像 007 這類識別碼才不會出錯。解析之後,再把程式需要的欄位轉成數字即可。

soap:Envelope 這類命名空間前綴會怎麼處理?

前綴會保留在鍵名中,因此 envelope 會顯示為 soap:Envelope,命名空間宣告則顯示為 @xmlns:soap 鍵。這樣可以區分來自不同詞彙的元素;如果你只處理其中一種,可在程式碼中移除前綴。

之後可以再把 JSON 轉回 XML 嗎?

可以,使用 JSON 轉 XML。依循相同的 @ 與 #text 慣例,屬性會還原為屬性。註解與原本的縮排不會回來,因為 JSON 中並未保存這些內容。