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 兩種資料格式的轉換關係,理解資料序列化格式之間的對映邏輯。
使用方法
- 在左側輸入框貼上 JSON 內容,或點擊「上傳」按鈕選擇 .json/.txt 檔案,或點擊「範例」載入內建樣本。
- 工具會自動轉換(輸入後 400ms 防抖);在右側查看生成的 XML 程式碼,CodeMirror XML 語法高亮便於閱讀。
- 可點擊「格式化」按鈕(⇧⌘+F)將 JSON 重新縮排為 2 空格,便於閱讀複雜 JSON 結構。
- 點擊「複製」將 XML 複製到剪貼簿,或點擊「下載」儲存為 output.xml 檔案(MIME: text/xml)。
- 如需修改根節點名稱或新增命名空間,可手動編輯生成的 XML。
- 將 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 實體(< > &),但極少數邊界情況(如 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 實體(如 < > &)。
- 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> | 字串直接作為元素文字內容 |
number | 30 | <age>30</age> | 數字轉為字串形式(型別資訊丟失) |
boolean | true | <isActive>true</isActive> | 布林轉為字串 'true'/'false' |
null | null | <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:
| 維度 | JSON | XML | 說明 |
|---|---|---|---|
| 語法 | { } : [ ] 簡潔 | < > </> 冗長 | 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 Schema | XSD / DTD | 兩者都有成熟的 schema 驗證機制 |
| 解析效能 | 更快(~3-5x) | 較慢(標籤開銷) | JSON 解析更簡單,XML 解析更複雜 |
| 使用場景 | REST API、前後端 | SOAP、企業、Office | 現代 Web 用 JSON,傳統企業用 XML |
XML 特殊字元轉義規則
本工具在 JSON 字串包含 XML 特殊字元時自動進行的轉義規則:
| 特殊字元 | XML 實體 | JSON 範例 | XML 輸出 |
|---|---|---|---|
< | < | "<" | <field><</field> |
> | > | ">" | <field>></field> |
& | & | "&" | <field>&</field> |
" | " | "\"" | <field>"</field> |
' | ' | "'" | <field>'</field> |
Tab | 	 | "\t" | <field>	</field> |
Newline | | "\n" | <field> </field> |
Privacy & Security
本 JSON 轉 XML 工具所有操作完全在你的瀏覽器本地完成:JSON 解析、XML 生成、prettyPrint 美化全部透過瀏覽器 JavaScript(基於 xmlbuilder2 函式庫)在用戶端執行,不會透過網路向任何伺服器傳送 JSON 內容、上傳的檔案或生成的 XML。檔案上傳使用瀏覽器原生 FileReader API 直接讀取到記憶體,不經過任何中介服務。不使用 Cookie 追蹤,不收集任何使用者輸入或使用資料。關閉或重新整理頁面後,所有輸入和輸出內容自動從記憶體清除。適合處理含敏感業務資料、企業內部 API 響應的 JSON。
Authoritative References
- W3CXML 1.0 規範 - W3C
- GitHubxmlbuilder2 GitHub 存放庫
- W3CSOAP 1.2 規範 - W3C
- MDNJSON 規範 - MDN Web Docs
- RSS Advisory BoardRSS 2.0 規範
- MDNXPath 教學 - MDN
- JSON 壓縮
- CSV 轉 JSON
- JSON 轉 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON 扁平化
- JSON 格式化
- JSON 產生器
- JSONPath 查詢
- JSON 合併
- JSON 修復
- JSON Schema 驗證器
- JSON 排序
- JSON Stringify
- JSON 轉 HTML 表格
- JSON 轉 Java
- JSON 轉 Markdown
- JSON 轉 SQL
- JSON 轉 TOML
- JSON 轉 TypeScript
- XML 轉 JSON
- JSON 轉 XML
- YAML 轉 JSON
- JSON 轉 YAML
- JSON 轉 Go
- JSON 轉 Rust
- JSON 轉 Swift
- JSON轉C#
- JSON 轉 C++
- JSON 轉 PHP
- JSON 轉 Python