選擇語言

XML 轉 JSON 轉換工具|保留屬性、自動解析數值與布林值

瀏覽器內即時轉換 XML 為 JSON,支援屬性保留、數值解析與錯誤提示,無需上傳檔案。

Mehmet Demiray 發佈日期 更新日期
分享
略過 XML 屬性而不將其包含在內
用於格式化 JSON 輸出的空格數

XML 與 JSON 資料模型差異解析

XML 與 JSON 雖同為資料交換格式,但結構哲學截然不同。XML 採用標籤(tag)與屬性(attribute)雙軌設計,例如 <product id="101" price="$299.00">筆電</product> 中,idprice 是屬性,而「筆電」是文字內容。JSON 則純以鍵值對(key-value pairs)與陣列表示,無法直接區分「屬性」與「內容」。因此,當使用 XML 轉 JSON 轉換器 時,屬性通常會加上特定前綴(如 @)轉為 JSON 鍵,避免與子元素混淆。此外,XML 支援混合內容(mixed content),如 <p>售價 <b>$1,500.00</b> 起</p>,但 JSON 無法自然表達此類嵌套文字與標籤交織的結構,轉換時往往簡化為純字串或丟失格式。理解這些根本差異,有助於預判轉換結果是否符合應用需求,特別是在處理政府開放資料或電子發票等常見 XML 格式時。

XML 屬性與重複元素如何映射至 JSON

在 XML 轉 JSON 轉換器 中,XML 屬性會自動加上前綴(預設為 @)轉為 JSON 物件的鍵。例如 <book isbn="978-986-123-456-7" lang="zh-TW">三體</book> 會轉為 { "@isbn": "978-986-123-456-7", "@lang": "zh-TW", "#text": "三體" }。此設計確保屬性不會與子元素命名衝突。至於重複出現的同名元素,轉換器會自動合併為陣列。假設訂單中有三筆商品:<item>蘋果</item><item>香蕉</item><item>奇異果</item>,輸出將為 { "item": ["蘋果", "香蕉", "奇異果"] }。若僅有一筆,則維持字串形式;兩筆以上才轉為陣列,此行為符合多數 JSON 解析慣例。開發者可透過保留屬性選項控制前綴符號,並搭配 JSON 格式化工具 檢視結構清晰度,確保後續程式邏輯正確處理陣列與純量。

自動轉換數字與布林值的實用選項

XML 文件中的數值常以字串形式儲存,例如 <temperature unit="°C">23.5</temperature><inStock>true</inStock>。若直接轉為 JSON,這些仍會是字串,不利後續運算。XML 轉 JSON 轉換器 提供「解析數字與布林值」選項,啟用後會自動偵測並轉型:"23.5" 變成數字 23.5"true" 變成布林值 true。這對處理氣象資料、庫存狀態或感測器回報極為實用。需注意,僅當文字節點完全符合數值或布林格式時才會轉換,例如 "100 元" 因含中文字而不會被轉型。建議在轉換金融交易或 IoT 資料流時勾選此功能,可減少前端或後端額外解析步驟。若需反向操作,亦可搭配 JSON 轉 XML 轉換器 進行驗證。

哪些 XML 特性在轉 JSON 時會遺失

儘管 XML 轉 JSON 轉換器 能高效轉換多數結構,但部分 XML 特性無法完整保留。首先是命名空間(namespace),如 <ns:product xmlns:ns="http://example.com/ns"> 中的 ns: 前綴,在轉換時通常被忽略或簡化,導致語意流失。其次是元素順序:XML 依賴序列位置傳達資訊(如地址欄位順序),但 JSON 物件本質無序,雖多數解析器維持插入順序,卻不保證跨平台一致。再者,混合內容(mixed content)——即文字與子元素交錯的結構,如 <sentence>今天氣溫達 <value>35 degree_celsius</value>。</sentence>——轉換後往往壓縮為單一字串 "今天氣溫達 35 degree_celsius。",失去結構層次。CDATA 區塊與註解則直接被忽略,因 JSON 無對應機制。這些限制意味著轉換結果未必能完美還原原始 XML,尤其在處理 SOAP 訊息或法律文件等高保真需求場景時需格外謹慎。

常見問題:屬性前綴、SOAP 與 CDATA 處理

使用者常問:「為何 XML 屬性需加前綴?」這是因 JSON 無法區分屬性與子元素,若 <person id="A123"><name>王小明</name></person> 直接轉為 { "id": "A123", "name": "王小明" },將混淆 id 的來源。加上 @ 前綴(如 "@id")可明確標示其為屬性。關於 SOAP 回應:多數簡單 SOAP 訊息(不含複雜命名空間或 WS-Security)可用本工具轉換,但若含大量命名空間宣告或自訂標頭,可能遺失關鍵資訊,建議先移除無關標籤再轉換。至於 CDATA 與註解:<![CDATA[特殊符號如 < & >]]> 會被視為純文字內容處理,註解 <!-- 備註 --> 則完全忽略,因 JSON 不支援註解語法。若需保留完整 XML 語意,應考慮其他序列化策略。轉換後可搭配 CSV 轉 JSON 工具 進一步整合異構資料源。

最常被問到的問題

為什麼 XML 屬性轉成 JSON 時要加上前綴?

因為 JSON 物件的鍵(key)必須是字串,無法像 XML 那樣區分「元素內容」與「屬性」。為避免命名衝突,XML 轉 JSON 轉換器會自動在屬性名稱前加上預設前綴(例如 @),讓您清楚辨識哪些是原始 XML 的屬性。這也符合業界常見的轉換慣例,如 Google 的 GSON 或其他主流解析器。

重複出現的 XML 標籤在 JSON 裡會變成什麼?

當同一層級出現多個相同標籤時,XML 轉 JSON 轉換器會自動將它們組合成陣列。例如 <item>apple</item><item>banana</item> 會轉為 "item": ["apple", "banana"]。即使只有一個元素,只要啟用「強制陣列」選項,也會保留陣列結構,方便後續程式處理。

這個工具能處理 SOAP 回應嗎?

可以。SOAP 回應本質上是格式嚴謹的 XML,因此可直接貼入 XML 轉 JSON 轉換器進行轉換。建議勾選「忽略 XML 宣告」與「自動解析數字/布林值」,以簡化輸出結構。但請注意,若 SOAP 訊息包含複雜命名空間或混合內容(mixed content),部分資訊可能會被簡化,詳情請參閱 JSON 轉 XML 轉換器 的對照說明。

CDATA 區塊和註解在轉換後會保留嗎?

不會。XML 轉 JSON 轉換器會忽略 XML 註解(<!-- -->)與處理指令(<?...?>)。至於 CDATA 區塊(<![CDATA[...]]>),其內容會被視為純文字節點提取出來,但 CDATA 標記本身不會保留在 JSON 中。這是因為 JSON 格式不支援這類 XML 特有語法,轉換時以內容為主。

轉出來的 JSON 數字和布林值會自動轉型嗎?

會,但需手動啟用。預設情況下所有文字節點都視為字串。若您勾選「自動解析數字與布林值」選項,轉換器會嘗試將 "123" 轉為數字、"true" 或 "false" 轉為布林值。這對處理 API 回應或設定檔特別實用,但請留意像 "01" 這類字串可能被轉為數字 1 而失去前置零。

轉完還能變回原來的 XML 嗎?

不一定能完全還原。由於 XML 與 JSON 的資料模型本質不同(例如命名空間、屬性順序、混合內容等),轉換過程可能有資訊損耗。因此 XML 轉 JSON 轉換器不保證可逆。若您需要雙向轉換,建議搭配使用 JSON 轉 XML 轉換器 並仔細比對結果,尤其在處理企業級資料交換時更需謹慎。