跳到主要內容

JSON 轉 XML 線上轉換

將 JSON 轉成有縮排且格式有效的 XML:鍵會變成元素,陣列會重複該元素,以 @ 開頭的鍵會變成屬性。轉換在你的瀏覽器中完成。

轉換為
在瀏覽器中執行・不需上傳運作方式

JSON 轉 XML 使用方法

  1. 1

    貼上 JSON

    可以是物件、記錄陣列或 API 回應;也可以直接拖放 .json 檔案。

  2. 2

    設定元素名稱

    「根元素」留空時會「依資料決定」,並可設定單純陣列中各項目所使用的元素名稱。

  3. 3

    下載 XML

    可用空格或 Tab 縮排,也可以排成一行,並選擇是否加入 <?xml?> 宣告。

限制與 Pro

JSON 檔案上限 500 MB;貼上的文字則只受瀏覽器可處理的大小限制。

JSON 檔案上限 4 GB。 查看 Pro

關於 JSON 轉 XML

JSON 轉 XML 會把 JSON 資料寫成 XML 文件,適合仍以 XML 交換資料的系統,例如會計與 ERP 匯入、電子發票格式、SOAP 服務、Android 資源檔和許多舊系統整合。

每個鍵都會變成一個元素,每個陣列會重複輸出同名元素,所以 {"book": [{…}, {…}]} 會變成並列的兩個 <book> 元素,這正是 XML 結構描述通常要求的形式。XML 不能以陣列當最上層,因此最上層陣列會包在根元素內,每筆資料成為一個項目元素;如果只有一個最上層鍵且內容是陣列,例如 {"orders": […]},該鍵會成為根元素,子元素則使用單數的 <order>。物件只有一個最上層鍵時,該鍵就是根元素,否則根元素名稱為 root,或是你輸入的名稱。

以 @ 開頭的鍵會變成屬性,"#text" 鍵會成為元素的文字內容,與 XML 轉 JSON 的慣例相同,資料可以雙向轉換。開啟「將簡單值寫成屬性」,就能得到像 <user id="1" name="Ann"/> 這樣精簡的記錄。

JSON 允許的鍵名稱 XML 不一定接受,所以會自動修正:空格和其他無效字元改為底線,以數字開頭的名稱前面會加上底線("1st place" → _1st_place)。文字會跳脫處理,不合法的字元會移除,null 會變成空元素,巢狀陣列則產生 item 子元素。

輸出為 UTF-8 編碼,是格式正確的 XML,但不會依 XSD 結構描述檢查,元素順序與必填欄位仍取決於你的資料。

隱私

你貼上或拖放的 JSON 會由這個瀏覽器分頁中的背景程式讀取並轉成 XML,不會傳送到伺服器,也不會儲存在任何地方。

JSON 轉 XML:常見問題

如何產生屬性而不是子元素?
在 JSON 的鍵前面加上 @,例如陣列中的 {"@id": 5, "name": "Ann"} 會輸出 <item id="5"><name>Ann</name></item>。若想一次把所有簡單值(文字、數字、true/false)都變成屬性,請開啟「將簡單值寫成屬性」;物件和陣列仍會是子元素,因為屬性只能放文字。
根元素會叫什麼名稱?
如果 JSON 是只有一個鍵的物件,例如 {"catalog": {…}},該鍵就會成為根元素;否則會用 <root> 包住全部內容。你也可以在「根元素」輸入任何名稱來覆蓋這兩種情況,無效字元會被替換,確保文件仍然有效。
陣列在 XML 中如何呈現?
鍵底下的陣列會重複該鍵的元素:"tag": ["a", "b"] 會變成 <tag>a</tag><tag>b</tag>。沒有自己鍵名的陣列,例如最上層陣列或陣列中的陣列,則會使用 item 元素,名稱可以自行更改。空陣列會變成一個空元素,避免鍵遺失。
特殊字元會跳脫處理嗎?
會。文字中的 & 與角括號會變成 &amp;、&lt; 和 &gt;;屬性值中的引號、Tab 與換行會寫成字元參照。XML 1.0 不允許的控制字元會被移除。由於文件採用 UTF-8,各種語言的文字與 emoji 都會照原樣輸出。
結果可以用我的 XSD 驗證嗎?
這裡不能驗證。轉換器會產生格式正確的 XML,但並不知道你的結構描述。請先依結構描述的要求調整 JSON(鍵名稱、鍵的順序、以 @ 表示屬性),轉換後再用 XML 編輯器或接收端系統驗證。輸出中的鍵順序會與 JSON 中的順序相同。

此工具的其他用途