JSON 轉 XML

免費線上 JSON 轉 XML 工具,將 JSON 物件或陣列自動轉換為標準 XML 格式。JSON 物件包裝為 <root> 根節點,陣列自動包裝為 <root><item> 重複節點結構,prettyPrint 格式化輸出,純瀏覽器本地處理不上傳。

相關推薦

關於 JSON 轉 XML:把 JSON 資料自動轉換為標準 XML 格式

JSON 轉 XML 是把 JSON 格式的資料(JSON 物件或 JSON 陣列)轉換為 XML(eXtensible Markup Language)格式的過程。JSON(JavaScript Object Notation)是現代 Web API 的標準資料格式,XML 是企業系統、SOAP Web Service、設定檔、Office 文件的傳統資料格式。兩種格式各有所長:JSON 簡潔易解析,XML 嚴格自描述、廣泛支援命名空間和 schema 驗證。開發中常需要把 JSON 資料轉換為 XML 以對接舊有系統或滿足特定業務需求,本工具就是要把這個過程自動化。

本工具的核心是基於 xmlbuilder2 函式庫把 JSON 節點遞迴轉換為 XML 元素。轉換規則非常簡單:JSON 物件的 key 變成 XML 元素名,value 變成元素文字內容;陣列則被包成重複的 <item> 子元素。JSON 物件預設包裝為 <root> 根節點,陣列包裝為 <root><item>...</item></root> 結構。prettyPrint: true 參數啟用美化輸出,自動加入縮排和換行。

陣列到重複元素的對映是 JSON 轉 XML 的關鍵設計。XML 沒有原生的陣列概念,需要透過重複元素(如 <item>1</item><item>2</item>)來表示清單資料。本工具統一使用 <item> 作為陣列元素子節點名稱,外層用 <root> 包裝形成符合 XML 資料交換約定的標準結構。生成的 XML 相容 RSS、SOAP、企業 XML 協議等常見應用場景。

prettyPrint 模式生成的 XML 可讀性遠高於 minify 模式。開發人員可以直接用文字編輯器、XML 編輯器(XMLSpy、oXygen)或瀏覽器打開查看,而不必先經過 xmllint 等格式化工具。這一設計在除錯和手動調整 XML 時特別有用。

JSON 的基本型別到 XML 的對映規則很簡單:字串直接作為元素文字(如 <name>Alice</name>);數字轉為字串形式(如 <age>30</age>);布林轉為字串 'true'/'false';null 轉為空元素或省略。所有非字串型別在 XML 中都丟失了型別資訊,解析時需要 schema 或型別提示還原。

嵌套物件會遞迴生成對應的 XML 樹。例如 { "user": { "name": "Alice", "age": 30 } } 會變成 <root><user><name>Alice</name><age>30</age></user></root>。這種結構保留了原始 JSON 的層級關係,方便 XML 解析器透過 XPath 查詢。

本工具採用純元素對映模式,所有 JSON 資料都轉為 XML 元素,不使用 XML 屬性(attribute)。這是因為元素對映更直觀、可讀性更好,且支援更複雜的嵌套結構。如果業務需要屬性形式(如 <node attr='value'/>),可以手動調整生成的 XML,或使用 XSLT 轉換。

即時轉換是工具的實用功能。輸入 JSON 後 400ms 防抖自動觸發轉換,配合 5 個鍵盤快捷鍵(macOS ⇧⌘+Enter/F/O/D/K),使用者可以快速完成轉換、格式化、上傳、下載、清空等常用操作,無需滑鼠點擊。

JSON 錯誤自修復提升了工具的容錯性。現實中使用者輸入的 JSON 經常存在小問題:尾隨逗號、單引號、缺引號、註解等。內建 tryFixJSON 函式會在 JSON.parse 失敗時自動嘗試修復常見錯誤,修復成功後會提示使用者;如果仍無法解析,會在右側顯示具體錯誤位置和原因。

純前端處理是本工具的核心架構。所有 JSON 解析、XML 生成都在瀏覽器 JavaScript 中執行,不向任何伺服器傳送資料。這種設計有兩點核心好處:第一,JSON 資料可能包含敏感資訊(使用者資料、API key、內部業務),本地處理完全消除洩漏風險;第二,轉換速度僅受裝置 CPU 限制,1MB 以內的 JSON 幾乎瞬時轉換完成,無需等待網路往返。

適用場景

  • 把 REST API 回傳的 JSON 資料轉換為 XML 格式,對接只接受 XML 的傳統企業系統(SAP、Oracle EBS)。
  • 從 JSON 設定生成 RSS feed、Atom feed 或 sitemap.xml,方便內容發布和 SEO 收錄。
  • 為 SOAP Web Service 準備訊息體(SOAP envelope 內的 XML payload),整合到企業服務匯流排。
  • 把 JSON 測試 fixture 轉換為 XML 格式,用於測試舊有的 XML 解析程式碼或 JAXB 資料繫結。
  • 把資料庫匯出的 JSON 資料轉換為 XML 格式供 XML 資料庫(BaseX、eXist)索引和查詢。
  • 把 Excel 匯出的 JSON 轉換為 XML,作為 Office Open XML 文件或 XLIFF 翻譯檔案使用。
  • 把 API mock 資料(JSON)轉為 XML 格式,用於測試 WSDL 用戶端或 gRPC XML 序列化。
  • 教學演示 JSON 與 XML 兩種資料格式的轉換關係,理解資料序列化格式之間的對映邏輯。

使用方法

  1. 在左側輸入框貼上 JSON 內容,或點擊「上傳」按鈕選擇 .json/.txt 檔案,或點擊「範例」載入內建樣本。
  2. 工具會自動轉換(輸入後 400ms 防抖);在右側查看生成的 XML 程式碼,CodeMirror XML 語法高亮便於閱讀。
  3. 可點擊「格式化」按鈕(⇧⌘+F)將 JSON 重新縮排為 2 空格,便於閱讀複雜 JSON 結構。
  4. 點擊「複製」將 XML 複製到剪貼簿,或點擊「下載」儲存為 output.xml 檔案(MIME: text/xml)。
  5. 如需修改根節點名稱或新增命名空間,可手動編輯生成的 XML。
  6. 將 XML 貼到目標系統(API 用戶端、XML 編輯器、企業系統)使用。

功能特點

  • 智慧節點包裝:JSON 物件自動包裝為 <root> 根節點,陣列自動包裝為 <root><item> 重複節點,符合 XML 資料交換約定。
  • prettyPrint 美化輸出:基於 xmlbuilder2 函式庫的 prettyPrint 模式生成帶縮排和換行的可讀 XML,無需手動格式化。
  • 即時自動轉換:輸入 JSON 後 400ms 防抖自動轉換,配合 5 個鍵盤快捷鍵提升操作效率。
  • JSON 錯誤自修復:內建 tryFixJSON 修復函式,自動處理尾隨逗號、單引號、缺引號等常見語法錯誤。
  • 基本型別相容:支援 null、boolean、number、string 等 JSON 基本型別,全部轉為 XML 元素文字。
  • 嵌套物件遞迴:任意深度的嵌套物件會遞迴生成對應的 XML 元素樹,保持資料結構完整性。
  • 陣列多層支援:一維和多維陣列都能正確轉換為 <item> 重複節點結構。
  • JSON/XML 雙重高亮:左側使用 CodeMirror JSON 語法高亮,右側使用 XML 語法高亮,可讀性強。
  • 完整快捷鍵體系:5 個常用快捷鍵(轉換/格式化/上傳/下載/清空),支援 macOS 和 Windows/Linux。
  • 複製與下載:一鍵複製到剪貼簿,或下載為標準 output.xml 檔案(MIME: text/xml)。
  • 純瀏覽器本地處理:所有 JSON 解析、XML 生成都在瀏覽器 JavaScript 中完成,原始資料不上傳。
  • 歷史記錄恢復:自動儲存最近 200 條歷史記錄,頁面載入時自動恢復上次輸入內容。

常見問題

怎麼把 JSON 轉成 XML 格式?

把 JSON 內容貼到左側輸入框,工具會自動將其轉換為標準 XML 格式。JSON 物件會包裝為 <root> 根節點(如 { "name": "Alice" } → <root><name>Alice</name></root>),陣列會包裝為 <root><item>...</item> 重複節點結構。輸入 400ms 後自動轉換,無需手動點擊。

JSON 陣列怎麼轉成 XML?

JSON 陣列會被工具自動包裝為兩層結構:外層是 <root> 根節點,內層是 <item> 重複節點。例如 [{"a":1},{"a":2}] 會被轉換為 <root><item><a>1</a></item><item><a>2</a></item></root>。這種設計符合常見的 XML 資料交換格式約定(如 RSS、SOAP 訊息)。

生成的 XML 格式是美化過的嗎?

是的,工具基於 xmlbuilder2 函式庫的 prettyPrint 模式生成美化過的 XML,輸出帶縮排和換行的可讀格式。開發者可以直接複製到 SOAP 工具、XML 編輯器或設定檔中閱讀,無需手動格式化。

支援哪些 JSON 資料結構?

支援所有合法 JSON 資料結構:基本型別(null、boolean、number、string)、陣列(一維或多維)、嵌套物件(任意深度)。陣列在每個層級都會被包成 <item> 重複節點。JSON 中包含函式、Symbol、undefined 等 JavaScript 特殊值不是合法 JSON,無法轉換。

下載的 XML 檔案能直接用於 SOAP 或 RSS 嗎?

可以。生成的 XML 符合標準 XML 1.0 規範,能被大多數 SOAP 工具、RSS 閱讀器、XML 資料庫(如 BaseX、eXist)以及企業系統(SAP、Oracle)直接解析。下載檔名為 output.xml,可被任何 XML 處理工具讀取。

JSON 解析失敗怎麼辦?

如果 JSON 存在尾隨逗號、缺引號、單引號代替雙引號等常見錯誤,工具會自動呼叫 tryFixJSON 嘗試修復。修復成功後會提示使用者;如果無法修復,會在右側顯示具體錯誤位置和原因。可使用 2/4 空格縮排重新格式化後再嘗試。

可以自訂 XML 根節點名稱嗎?

本工具統一使用 root 作為根節點名稱,陣列元素使用 item 作為子節點名稱。這是 XML 資料交換中最通用的命名約定,避免命名衝突。如果你需要自訂根節點或子節點名稱,可以手動編輯生成的 XML,或在 JSON 中新增根鍵(如將 { "data": [...] } 轉換為 <root><data>...</data></root>)。

JSON 數字和布林值在 XML 中如何表示?

XML 沒有原生數字和布林型別,所有值都被轉為字串。例如 JSON 中的 true 會變成 XML 元素 <isActive>true</isActive>,數字 30 會變成 <age>30</age>。解析時 XML 解析器會按 schema 或型別提示自動轉換。如果需要保留型別資訊,建議使用 JSON Schema 或 DTD/XSD 驗證。

支援 XML 命名空間(namespace)嗎?

本工具生成標準 XML(無命名空間),適合大多數通用場景。如果需要 SOAP 或 WSDL 等需要命名空間的 XML,可以手動編輯生成的 XML 新增 xmlns 宣告,或使用專門的 SOAP 工具鏈。

支援 XML 屬性(attribute)嗎?

不支援。工具採用純元素(element)對映模式:所有 JSON key 轉為 XML 元素,所有 value 轉為元素文字內容。如果你需要屬性形式(如 <node attr='value'/>),需要手動調整生成的 XML 或使用 XSLT 轉換。

支援哪些輸入檔案類型?

支援 .json 和 .txt 檔案(UTF-8 編碼)。點擊「上傳」按鈕選擇本地檔案,工具透過瀏覽器原生 FileReader API 讀取,不會上傳到伺服器。上傳成功後內容自動填入輸入框並觸發轉換。

鍵盤快捷鍵有哪些?

工具支援以下快捷鍵:macOS 使用者 ⇧⌘+Enter 轉換、⇧⌘+F 格式化、⇧⌘+O 上傳、⇧⌘+D 下載、⇧⌘+K 清空;Windows/Linux 使用者用 Ctrl 替代 ⌘。這些快捷鍵遵循主流 JSON 編輯工具的約定,熟練使用可顯著提升操作效率。

故障排查

生成的 XML 根節點叫 root,能改嗎?

本工具統一使用 root 作為根節點名稱(陣列元素為 item)。如果業務需要自訂名稱(如 <response>、<data>),有兩種方案:1) 手動編輯生成的 XML,用文字編輯器的尋找取代功能把 <root> 改為目標名稱;2) 在 JSON 資料中包一層(如 {"response": {...}}),生成的 XML 會變成 <root><response>...</response></root>,然後用尋找取代去掉外層 <root>。

XML 解析報錯 'unclosed token' 怎麼辦?

原因通常是 JSON 字串包含 XML 特殊字元(<、>、&)未正確轉義。本工具會自動將這些字元轉為 XML 實體(&lt; &gt; &amp;),但極少數邊界情況(如 CDATA 段、註解)可能需要手動處理。檢查 JSON 中的 < 和 > 字元,確認它們是資料內容而非意外的標籤開始。

陣列元素如何自訂標籤名(不用 item)?

本工具統一使用 <item> 作為陣列元素子節點名稱(符合 RSS、SOAP 等通用約定)。如果業務需要其他名稱(如 <row>、<entry>),可以手動編輯生成的 XML,用尋找取代把 <item> 取代為目標名稱並同步調整結束標籤 </item>。

JSON 數字變成字串丟失了型別怎麼辦?

XML 沒有原生數字型別,所有 value 都轉為字串。如果需要在解析端區分型別,方案:1) 使用 XSD schema 驗證 XML 並指定元素型別(xs:integer、xs:boolean);2) 在 JSON 中預先用 key 名稱暗示型別(如 price_string、count_number);3) 轉換後用 XSLT 指令碼根據業務規則轉換型別。

如何讓數字在 XML 中保持數字型別?

XML 1.0 標準沒有原生數字型別。如果必須保留型別資訊,方案:1) 使用 XSD schema 在 <xs:element name='age' type='xs:integer'/> 中宣告;2) 使用 JSON Schema 配合 XML Schema 轉換工具;3) 在資料外層加 XSI 命名空間(xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance')。

下載的 .xml 檔案用什麼打開?

下載檔案 output.xml 是 UTF-8 編碼的標準 XML 檔案,可用任何文字編輯器(VS Code、Sublime、Notepad++)或專業 XML 編輯器(XMLSpy、oXygen)打開。也可直接拖入瀏覽器(Chrome、Firefox)查看格式化的樹狀結構。SOAP/RSS 閱讀器、企業中介軟體、XML 資料庫(BaseX、eXist)也能直接讀取。

JSON 中含 emoji 或中文會出錯嗎?

不會。本工具支援完整的 UTF-8 編碼,包括中文、日文、韓文、emoji 等 Unicode 字元。xmlbuilder2 函式庫會自動處理 XML 實體轉義,emoji 和中文都會按原樣出現在 XML 元素中,無需特殊處理。

術語表

JSON(JavaScript Object Notation)
輕量級資料交換格式,基於 JavaScript 物件語法但獨立於程式語言。支援物件 ({}), 陣列 ([]), 字串, 數字, 布林, null 六種基本型別。廣泛用於 REST API、前後端資料傳輸、設定檔、記錄檔等場景。
XML(eXtensible Markup Language)
可延伸標記語言,由 W3C 於 1998 年制定。使用尖括號標籤描述資料結構和內容,支援命名空間、Schema 驗證、XSLT 轉換。是 SOAP Web Service、Office Open XML、RSS、Atom 等的標準格式。
xmlbuilder2
JavaScript XML 建構函式庫,用於以程式設計方式生成結構化 XML 文件。支援命名空間、屬性、美化輸出(prettyPrint)、CDATA 段、註解等進階特性。本工具基於此函式庫實現 JSON 到 XML 的自動轉換。
節點包裝(root / item)
本工具的 XML 節點命名約定:JSON 物件統一包裝為 <root> 根節點;JSON 陣列的元素統一包成 <item> 重複子節點。這種命名避免了與使用者資料中的 key 衝突,符合 XML 資料交換的通用約定。
prettyPrint
xmlbuilder2 函式庫的輸出模式。啟用後生成的 XML 自動加入縮排和換行(如 2 空格縮排),可讀性高;停用時輸出緊湊無空白(minify)。本工具預設啟用 prettyPrint。
SOAP(Simple Object Access Protocol)
基於 XML 的 Web 服務通訊協議。SOAP 訊息由 SOAP envelope(XML 命名空間)包裝,內含 header 和 body(XML payload)。本工具可生成 SOAP body 需要的 XML payload,再手動新增 envelope 即可。
RSS / Atom feed
基於 XML 的內容訂閱格式。RSS 2.0 格式以 <rss><channel><item> 結構組織內容,Atom 使用 <feed><entry> 結構。本工具生成的 <root><item> 模式與 RSS 類似,可作為 RSS 生成器的中間步驟。
元素 vs 屬性
XML 中資料表示的兩種方式。元素用開始/結束標籤包裹(如 <name>Alice</name>),屬性用 key='value' 形式(如 <user name='Alice'/>)。本工具採用純元素對映,不使用屬性。
CDATA 段
XML 中的特殊語法 <![CDATA[...]]>,用於在元素內嵌入含特殊字元(如 <、>、&)的文字而無需轉義。本工具預設不生成 CDATA 段,特殊字元會被自動轉義為 XML 實體(如 &lt; &gt; &amp;)。
XML 命名空間(namespace)
透過 xmlns 屬性避免元素名稱衝突的機制,格式如 xmlns:prefix='uri'。常用於 SOAP(http://schemas.xmlsoap.org/soap/envelope/)和 XHTML 等標準。本工具不自動新增命名空間,需要時手動編輯生成的 XML。
XPath
XML 路徑查詢語言,用於在 XML 文件中定位節點。如 /root/user/name 可查詢根元素下 user 元素下的 name 元素。本工具生成的 XML 結構便於 XPath 查詢。
XSLT
XML 樣式表轉換語言,用於將一種 XML 格式轉換為另一種(如 XML 轉 HTML、XML 轉 PDF)。本工具生成的 XML 簡單結構便於 XSLT 後處理。
tryFixJSON
本工具內建的 JSON 修復函式,會自動處理尾隨逗號、單引號代替雙引號、缺引號的 key、註解等常見 JSON 語法錯誤。在 JSON.parse 失敗時自動呼叫,修復成功後會通知使用者並繼續轉換。

JSON 型別到 XML 元素的對映規則

本工具基於 xmlbuilder2 的 JSON 到 XML 轉換對映規則:

JSON 值範例XML 元素對映規則
string"Alice"<name>Alice</name>字串直接作為元素文字內容
number30<age>30</age>數字轉為字串形式(型別資訊丟失)
booleantrue<isActive>true</isActive>布林轉為字串 'true'/'false'
nullnull<field></field> 或省略null 轉為空元素(依賴 xmlbuilder2 預設行為)
object{"a":1}<root><a>1</a></root>物件包裝為 <root> 根節點,key 轉為子元素
array of objects[{"a":1}]<root><item><a>1</a></item></root>陣列包成 <item> 重複節點
nested object{"user":{"name":"x"}}<root><user><name>x</name></user></root>嵌套物件遞迴生成對應元素樹
nested array[[1,2]]<root><item><item>1</item><item>2</item></item></root>多層陣列遞迴包裝 <item>

JSON vs XML 格式對比

兩種資料格式在不同維度上的對比,幫助理解何時選擇 JSON 或 XML:

維度JSONXML說明
語法{ } : [ ] 簡潔< > </> 冗長JSON 語法更簡潔,XML 標籤更冗長但可讀性高
資料型別原生支援 number/bool/null全是字串JSON 保留型別,XML 需靠 schema 驗證型別
陣列原生 [1,2,3]重複元素 <i>1</i><i>2</i>JSON 陣列簡潔,XML 陣列依賴命名約定
註解不支援(標準)<!-- 註解 -->XML 支援註解,JSON 標準不支援(僅 JSON5/JSONC)
命名空間xmlns 支援XML 命名空間避免大型文件的命名衝突
Schema 驗證JSON SchemaXSD / DTD兩者都有成熟的 schema 驗證機制
解析效能更快(~3-5x)較慢(標籤開銷)JSON 解析更簡單,XML 解析更複雜
使用場景REST API、前後端SOAP、企業、Office現代 Web 用 JSON,傳統企業用 XML

XML 特殊字元轉義規則

本工具在 JSON 字串包含 XML 特殊字元時自動進行的轉義規則:

特殊字元XML 實體JSON 範例XML 輸出
<&lt;"<"<field>&lt;</field>
>&gt;">"<field>&gt;</field>
&&amp;"&"<field>&amp;</field>
"&quot;"\""<field>&quot;</field>
'&apos;"'"<field>&apos;</field>
Tab&#9;"\t"<field>&#9;</field>
Newline&#10;"\n"<field>&#10;</field>

Privacy & Security

本 JSON 轉 XML 工具所有操作完全在你的瀏覽器本地完成:JSON 解析、XML 生成、prettyPrint 美化全部透過瀏覽器 JavaScript(基於 xmlbuilder2 函式庫)在用戶端執行,不會透過網路向任何伺服器傳送 JSON 內容、上傳的檔案或生成的 XML。檔案上傳使用瀏覽器原生 FileReader API 直接讀取到記憶體,不經過任何中介服務。不使用 Cookie 追蹤,不收集任何使用者輸入或使用資料。關閉或重新整理頁面後,所有輸入和輸出內容自動從記憶體清除。適合處理含敏感業務資料、企業內部 API 響應的 JSON。

Authoritative References