跳至主要內容
Lizely

從 JSON 轉成 XML

將 JSON 轉成經轉義的、帶有標註的 XML,並提供可追溯的確定性對應規則、自訂根元素名稱,且不會上傳任何內容。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.貼上有效的 JSON,並輸入簡單的 XML 根元素名稱。
  2. 2.選擇清晰輸出或緊湊輸出,然後選擇轉換為 XML。
  3. 3.檢視 type 屬性與轉義的鍵名,複製 XML,並對照接收系統實際的對應規則或模式進行驗證。

關於從 JSON 轉成 XML

JSON 轉成 XML 會將有效的 JSON 轉為結構正確的 XML,使用可追溯的型別對應規則。貼上一個物件、陣列或基本值,選擇一個安全的根元素名稱,選擇清晰或緊湊輸出,並複製結果。所有處理皆在瀏覽器內完成,且限制於 500,000 字元與 64 巢狀層級。

JSON 與 XML 並無通用的一對一轉換標準。JSON 包含物件、陣列、字串、數值、布林值與 null。XML 則包含元素、屬性、文字、名稱空間與混合內容。本工具不掩蓋這種不匹配。相反地,每個產生的元素都會帶有 type 屬性,以便下游讀取者可區分 JSON 數值與包含相同數字的字串、陣列與物件,以及 null 與空字串。

簡單的 XML 名稱會成為元素名稱。接受的限定形式以 ASCII 字母或底線開頭,後續接字母、數字、底線、點或破折號。以任何大小寫形式開頭為 xml 的名稱為保留名稱,不會直接發出。不符合規則的名稱會成為項目元素,並將原始名稱儲存於轉義後的 key 屬性中。

陣列會成為標註 type=array 的父元素,每個成員會以原始順序作為項目子元素呈現。物件會標註 type=object,並保留 JavaScript 解析後的屬性順序。字串、數字與布林值會成為帶有對應 type 屬性的文字。null 會成為標註 type=null 的自閉合元素。空物件與空陣列會透過其 type 屬性區分。

對敏感的 XML 字元進行轉義。& 會變成 &amp;,< 會變成 &lt;,> 會變成 &gt;,文字中出現的雙引號也會在屬性中額外轉義。轉換器會產生一個 UTF-8 XML 宣告。它從不將貼入的內容當作標記插入,因此包含標記的 JSON 字串會保持為文字內容,而不是變成可執行或結構性的 XML 元素。

預設的清晰模式使用兩空格縮排與換行以便檢視。緊湊模式會移除格式化空白,但保留相同的元素、屬性、順序與值。兩種模式均不會重新格式化原始 JSON 數值詞彙:JSON 解析會先將數值轉為 JavaScript 數值,因此不保留無關的詞彙細節,例如尾數零。

這個對應並不代表 XML 名稱空間、來自 JSON 鍵值的屬性、備註、處理指示、CDATA 區段、文件型別宣告或混和文字與元素內容。它也不保證與廠商不同的 JSON 到 XML 約定相容。如果 API、結構或整合定義了必須的對應,請遵循那個契約,而不是假設這個輸出與之相符。

64 深度限制可防止過度巢狀導致呼叫堆疊耗盡,同時字元限制則限制瀏覽器處理能力。無效的 JSON、無效的根名稱或以 xml 開頭的保留名稱會在輸出前產生錯誤。測試涵蓋物件、陣列、基本型別、null、空陣列、轉義、無效鍵、清晰輸出、緊湊輸出、錯誤的 JSON 與根驗證。

為取得最佳結果,建議先驗證 JSON,使用接收系統預期的根名稱,轉換代表性樣本,並在處理前以目標系統解析 XML。若需要往返一致性,應在雙方明確記錄此精確的型別對應規則,或使用模式控制的轉換。本頁面不會上傳、儲存、驗證 XSD 或將輸出傳送至遠端端點。

方法與來源

使用瀏覽器 JSON 解析器解析有界 JSON;驗證簡單的非 xml 字首根名稱;遞迴地將物件、陣列、字串、數字、布林值和 null 對映為攜帶明確型別屬性的元素;將不安全的鍵對映為帶轉義鍵屬性的項目元素;轉義 XML 文字和屬性;將巢狀深度限制在 64;並使用兩格空格縮排或無格式空白字元進行序列化。請不要聲稱有通用對應或 XSD 驗證。

常見問題

存在一個標準的 JSON 至 XML 轉換規則嗎?
沒有。本工具使用可追溯的型別對應規則,並不聲稱具有普遍相容性。
陣列如何表示?
一個陣列會變成一個標記為型別=array 的元素,並包含順序的項目子元素。
無效的 XML 鍵名稱會如何處理?
它們會變成項目元素,其轉義的鍵屬性會保留原始 JSON 鍵值。
貼入的字串會變成 XML 標記嗎?
不會。對敏感的 XML 字元進行轉義,因此 JSON 字串僅保留為文字內容。

開發者工具 使用指南

查看全部