跳到主要內容

格式轉換:XML To JSON

使用 xml-js 的 compact 模式將 XML 轉換為 JSON:屬性放在 _attributes 下,文字放在 _text 下,重複的同級元素變為陣列。所有值都保持為字串。

在編寫解析程式碼前,以 JSON 形式檢視 SOAP、RSS 或舊版 XML API 的響應。

XML

適用場景

  • 在編寫解析程式碼前,以 JSON 形式檢視 SOAP、RSS 或舊版 XML API 的響應。
  • 從 XML 匯出檔案中提取屬性值和文字,交給基於 JSON 的工具。

使用方法

  1. 將 XML 貼上到左側編輯器,或載入 .xml 檔案。
  2. 在 JSON 中,從 _attributes 讀取屬性,從 _text 讀取元素文字,從陣列讀取重複元素。
  3. 複製 JSON,把需要的欄位對映到你自己的結構中。

XML 輸入

<order id="1042">
  <customer>Ada Lovelace</customer>
  <item sku="A-1">Keyboard</item>
  <item sku="B-7">Mouse</item>
</order>

JSON

{
  "order": {
    "_attributes": {
      "id": "1042"
    },
    "customer": {
      "_text": "Ada Lovelace"
    },
    "item": [
      {
        "_attributes": {
          "sku": "A-1"
        },
        "_text": "Keyboard"
      },
      {
        "_attributes": {
          "sku": "B-7"
        },
        "_text": "Mouse"
      }
    ]
  }
}

功能與限制

轉換在瀏覽器中進行。沒有設定項,compact 格式是固定的。

只出現一次的元素是物件,出現兩次就變成陣列,因此 JSON 結構可能隨資料變化。程式碼中需要同時處理兩種情況。

XML 宣告、註釋和 CDATA 會保留為 _declaration、_comment 和 _cdata。不進行 schema(XSD)或 DTD 校驗。

混合內容(文字與標籤交錯)會丟失原有順序。

FAQ

數字和布林值會轉換為 JSON 型別嗎?

不會。屬性值和文字都保持為字串,例如 "1042"。需要時請在自己的程式碼中轉換型別。

XML 格式有誤會怎樣?

頁面會顯示 "Invalid XML" 錯誤而不是 JSON,例如 "unclosed tag <order>" 或 "Unexpected close tag (line 3, column 8)"。請閉合每個元素、給屬性值加引號,並把 & 轉義為 &amp;。

能得到不含 _text 和 _attributes 鍵的 JSON 嗎?

本頁不行。compact 格式保留這些鍵,以免屬性和文字混淆。複製後請在程式碼中調整結構。

規範與參考資料