跳到主要內容

XML 轉 JSON 線上轉換

將 XML 文件轉成 JSON:屬性以 @ 開頭的鍵表示,重複的元素轉為陣列,數字會轉成數值型別。全程由瀏覽器內建的 XML 剖析器在你的裝置上處理。

轉換為
拖放 XML 檔案XML 上限 100 MB・JSON、CSV、XLSX、XLS、ODS 上限 500 MB
選擇檔案在你的裝置上處理,不會上傳
在瀏覽器中執行・不需上傳運作方式

XML 轉 JSON 使用方法

  1. 1

    貼上或拖放 XML

    可以是 .xml 檔案、RSS 或 Atom 摘要、SOAP 回應,或任何 XML 文字;會依宣告中的編碼來讀取。

  2. 2

    設定 JSON 結構

    屬性可用 @ 開頭的鍵、一般的鍵或完全省略;陣列可只用於重複的元素或一律使用;數字可轉為數值型別或保留為文字。

  3. 3

    複製 JSON

    可選擇格式化或精簡輸出,複製到剪貼簿,或下載 .json 檔案。

限制與 Pro

XML 檔案上限 100 MB;貼上的 XML 則取決於瀏覽器能容納的大小。

關於 XML 轉 JSON

當 API、政府入口網站或老舊的系統整合丟給你 XML,而你的程式需要的是 JSON 時,就可以用 XML 轉 JSON。文件的根元素會成為最上層唯一的鍵,每個子元素成為一個屬性,同一個父元素下重複出現的元素,則會依文件順序轉成陣列。

JSON 沒有屬性這個概念,所以必須決定如何處理。預設會寫成以 @ 開頭的鍵,例如 <price currency="UZS">125000</price> 會變成 {"@currency": "UZS", "#text": 125000},這樣能區分屬性與子元素,也能把 JSON 轉回相同的 XML。使用一般的鍵可得到較精簡的物件;若文件的屬性只用於內部管理,也可以選擇省略。

數值方面:開啟型別偵測後,42 和 3.5 會成為 JSON 數字,true/false 會成為布林值,但凡是當成數字讀取後內容會改變的值,一律保留為字串,例如開頭為 0 的郵遞區號與帳號、超過 15 位的數字。空元素會變成空字串。

命名空間預設照原樣保留(dc:title),也可以移除前綴讓鍵更簡潔,同時會一併移除 xmlns 宣告。「一律使用陣列」會讓每個子元素都有相同的陣列結構,當有些紀錄只有一位作者、有些有三位時特別方便。

不會保留的內容:註解、處理指令與 DOCTYPE;與行內標籤混合的文字(例如 XHTML 段落)會合併成單一字串。

隱私

XML 由本頁的背景工作程式解析,不會發出任何網路請求,也不會擷取 DTD 或外部實體,文件不會離開你的裝置。

XML 轉 JSON:常見問題

JSON 裡的 #text 是什麼意思?
當元素同時有屬性或子元素,又有自己的文字時,文字需要一個專屬的鍵,#text 是常見的慣例。<title lang="en">Guide</title> 會變成 {"@lang": "en", "#text": "Guide"}。若元素只有文字,就會直接成為一般的值,所以 <title>Guide</title> 就是 "title": "Guide"。
數字會被轉換,還是保留為字串?
開啟「偵測數字與 true/false」後,明確是數字或布林值的內容會使用 JSON 型別。開頭有 0 的值(如 007 或郵遞區號)以及超過 15 位的數字會保留為字串,因為轉成數字會改變內容。若要讓所有值都維持文字,請關閉偵測。
soap: 或 dc: 這類命名空間會怎麼處理?
預設會把前綴保留在鍵中,所以 dc:title 就是鍵 "dc:title",xmlns 宣告則以 @xmlns 屬性呈現。開啟「移除命名空間前綴」就會得到 title,並省略宣告。但不同命名空間若使用相同的本地名稱,就會共用同一個鍵,這種情況請保留前綴。
之後可以把 JSON 轉回 XML 嗎?
可以。到 JSON 轉 XML 頁面將目標切換為 XML:以 @ 開頭的鍵會成為屬性,#text 成為元素的文字,陣列則成為重複的元素。若父元素內不同名稱的子元素交錯出現,順序可能改變,註解也不會保留,但資料本身都能完整還原。
為什麼出現錯誤而不是 JSON?
表示 XML 格式不正確,錯誤訊息會顯示第一個問題所在的行與列。常見原因有:應寫成 &amp; 的 &、標籤關閉順序錯誤、屬性值沒有加引號,或使用了 XML 未定義的 HTML 實體(如 &nbsp;)。修正該處後再貼上一次即可。

此工具的其他用途