ToolDeck

مبدل JSON به XML

تبدیل JSON به فرمت XML

یک مثال امتحان کنید

ورودی JSON

خروجی XML

به‌صورت محلی اجرا می‌شود · جای‌گذاری اسرار امن است
XML اینجا نمایش داده می‌شود…

تبدیل JSON به XML چیست؟

JSON (JavaScript Object Notation) و XML (eXtensible Markup Language) دو فرمت غالب تبادل داده در توسعه نرم‌افزار هستند. JSON از جفت‌های کلید-مقدار و آرایه‌ها با نحو فشرده استفاده می‌کند، در حالی که XML داده‌ها را در تگ‌های باز و بسته با ویژگی‌های اختیاری می‌پوشاند. تبدیل JSON به XML یعنی ترجمه ساختارهای اولیه JSON — آبجکت‌ها، آرایه‌ها، رشته‌ها، اعداد، مقادیر بولین و null — به یک سند XML معتبر با تودرتویی عناصر متناظر.

XML در بسیاری از سیستم‌های سازمانی، APIهای دولتی، وب‌سرویس‌های SOAP و استانداردهای صنعتی مانند HL7 (بهداشت)، FpML (مالی) و XBRL (گزارش‌دهی مالی) همچنان فرمت الزامی است. وقتی برنامه شما JSON تولید می‌کند اما سیستم مقصد XML انتظار دارد، یک مبدل JSON به XML این ترجمه را بدون تغییر دستی ساختار انجام می‌دهد. تبدیل از قوانین نگاشت قابل پیش‌بینی پیروی می‌کند: آبجکت‌های JSON به عناصر XML تبدیل می‌شوند، آیتم‌های آرایه به عناصر هم‌رده تکراری، و مقادیر اولیه به گره‌های متنی.

هیچ RFC یا استاندارد W3C واحدی وجود ندارد که نحوه نگاشت JSON به XML را تعریف کند. کتابخانه‌های مختلف برای یک ورودی یکسان خروجی متفاوتی تولید می‌کنند. رایج‌ترین قرارداد (که این ابزار از آن استفاده می‌کند) کل سند را در یک عنصر ریشه قابل تنظیم می‌پوشاند، هر کلید JSON را به یک عنصر فرزند XML تبدیل می‌کند و آیتم‌های آرایه را به عنوان عناصر تکراری با همان نام تگ نشان می‌دهد. درک این قوانین نگاشت زمانی اهمیت دارد که سیستم دریافت‌کننده یک XML Schema (XSD) خاص را اعمال می‌کند.

چرا از یک مبدل آنلاین JSON به XML استفاده کنیم؟

نوشتن XML به صورت دستی از یک منبع JSON خسته‌کننده و مستعد خطاست. تگ‌های نامتطابق، عناصر بسته فراموش‌شده و تودرتویی نادرست اسنادی تولید می‌کنند که اعتبارسنجی schema را شکست می‌دهند. یک مبدل ترجمه ساختاری را به صورت خودکار انجام می‌دهد.

تبدیل فوری در مرورگر
JSON را پیست کنید و XML معتبر را در چند میلی‌ثانیه دریافت کنید. بدون ارسال داده به سرور، بدون راه‌اندازی CLI، بدون نصب وابستگی. تبدیل کاملاً در JavaScript روی دستگاه شما اجرا می‌شود.
🔒
داده‌های حساس را خصوصی نگه دارید
ورودی JSON شما هرگز از تب مرورگر خارج نمی‌شود. تمام تجزیه و تولید XML در سمت کلاینت اتفاق می‌افتد، که تبدیل داده‌های حساس مثل کلیدهای API، توکن‌ها یا داده‌های production را ایمن می‌کند.
📋
بدون نیاز به حساب کاربری یا ورود
صفحه را باز کنید، JSON خود را پیست کنید و خروجی XML را کپی کنید. بدون فرم ثبت‌نام، تأیید ایمیل یا محدودیت استفاده بین شما و داده تبدیل‌شده‌تان.
🌳
مدیریت خودکار ساختارهای تودرتو
آبجکت‌های عمیقاً تودرتو، آرایه‌های مختلط و مقادیر null همه به درستی تبدیل می‌شوند. ابزار سلسله‌مراتب کامل ورودی JSON شما را در درخت XML حاصل حفظ می‌کند.

موارد استفاده از مبدل JSON به XML

یکپارچه‌سازی وب‌سرویس SOAP
REST API شما JSON برمی‌گرداند، اما endpoint SOAP یک شریک به بدنه‌های درخواست XML نیاز دارد. بار JSON را قبل از پوشاندن در یک پوشه SOAP به XML تبدیل کنید.
تبادل داده سازمانی
سیستم‌های ERP و CRM قدیمی اغلب فقط واردات XML را می‌پذیرند. صادرات JSON از ابزارهای مدرن را به فیدهای XML تبدیل کنید که با schema مورد انتظار مطابقت داشته باشند.
پیکربندی خط لوله CI/CD
برخی ابزارهای ساخت (Maven، Ant، MSBuild) از فایل‌های پیکربندی XML استفاده می‌کنند. قطعات پیکربندی XML را از فایل‌های پارامتر JSON در طول ساخت‌های خودکار تولید کنید.
آماده‌سازی داده آزمون در QA
فیکسچرهای آزمون XML را از مجموعه داده‌های JSON تولید کنید. برای آزمایش تجزیه‌گرهای XML، تبدیل‌های XSLT یا کوئری‌های XPath اسناد XML معتبر را به سرعت تولید کنید.
اتصال فرمت در خط لوله داده
خطوط لوله ETL که XML را می‌بلعند می‌توانند داده را از APIهای تولیدکننده JSON دریافت کنند. نتایج JSON میانی را قبل از بارگذاری در مرحله پردازش مبتنی بر XML به XML تبدیل کنید.
یادگیری ساختار XML
دانشجویانی که XML را مطالعه می‌کنند می‌توانند ساختارهای JSON آشنا را پیست کنند و معادل XML را ببینند. این کار تودرتویی تگ‌ها، سلسله‌مراتب عناصر و ساختار سند را ملموس می‌کند.

قوانین نگاشت JSON به XML

از آنجا که هیچ استاندارد جهانی بر تبدیل JSON به XML حاکم نیست، ابزارهای مختلف خروجی متفاوتی تولید می‌کنند. جدول زیر قراردادهای نگاشت مورد استفاده توسط این مبدل و محبوب‌ترین کتابخانه‌ها (js2xmlparser، xmlbuilder، fast-xml-parser) را نشان می‌دهد. قرارداد عناصر هم‌رده تکراری برای آرایه‌ها غالب شد زیرا همان روشی است که XML schemaها به طور طبیعی مجموعه‌ها را مدل می‌کنند — هر آیتم یک عنصر درجه اول است نه یک فرزند پوشیده — و به خوبی با کوئری‌های XPath و تبدیل‌های XSLT یکپارچه می‌شود.

JSON TypeJSON ExampleXML Output
Object{"name": "Alice"}<name>Alice</name>
Nested object{"user": {"age": 30}}<user><age>30</age></user>
Array{"colors": ["red", "blue"]}<colors>red</colors><colors>blue</colors>
String"hello"<root>hello</root>
Number42<root>42</root>
Booleantrue<root>true</root>
Nullnull<root/>
Empty object{}<root/>
Empty array[](no child elements)

مثال‌های کد

در ادامه قطعه کدهای اجراپذیر برای تبدیل JSON به XML در سه محیط آمده است. هر مثال XML معتبر از یک آبجکت JSON نمونه تولید می‌کند.

JavaScript (Node.js)
import { create } from 'xmlbuilder2';

const json = {
  order: {
    id: 1024,
    items: [
      { sku: "A1", qty: 2 },
      { sku: "B3", qty: 1 }
    ],
    shipped: false
  }
};

const xml = create({ version: '1.0' })
  .ele(json)
  .end({ prettyPrint: true });

console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// →   <id>1024</id>
// →   <items>
// →     <sku>A1</sku>
// →     <qty>2</qty>
// →   </items>
// →   <items>
// →     <sku>B3</sku>
// →     <qty>1</qty>
// →   </items>
// →   <shipped>false</shipped>
// → </order>
Python
import json
import xmltodict

data = {
    "order": {
        "id": 1024,
        "items": [
            {"sku": "A1", "qty": 2},
            {"sku": "B3", "qty": 1}
        ],
        "shipped": False
    }
}

# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# →   <id>1024</id>
# →   <items>
# →     <sku>A1</sku>
# →     <qty>2</qty>
# →   </items>
# →   <items>
# →     <sku>B3</sku>
# →     <qty>1</qty>
# →   </items>
# →   <shipped>false</shipped>
# → </order>
Go
package main

import (
	"encoding/json"
	"encoding/xml"
	"fmt"
)

type Item struct {
	SKU string `json:"sku" xml:"sku"`
	Qty int    `json:"qty" xml:"qty"`
}

type Order struct {
	XMLName xml.Name `xml:"order"`
	ID      int      `json:"id" xml:"id"`
	Items   []Item   `json:"items" xml:"items"`
	Shipped bool     `json:"shipped" xml:"shipped"`
}

func main() {
	raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`

	var order Order
	json.Unmarshal([]byte(raw), &order)

	out, _ := xml.MarshalIndent(order, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <order>
	// →   <id>1024</id>
	// →   <items>
	// →     <sku>A1</sku>
	// →     <qty>2</qty>
	// →   </items>
	// →   ...
}

سؤالات متداول

آیا تبدیل JSON به XML بدون اتلاف است؟
از نظر ساختاری، بله — هر مقدار JSON به یک عنصر XML یا گره متنی نگاشت می‌شود. اما XML به طور بومی بین اعداد، مقادیر بولین و رشته‌ها به روشی که JSON می‌کند تمایز قائل نمی‌شود. مقدار 42 در JSON به محتوای متنی «42» در XML تبدیل می‌شود. اگر سیستم دریافت‌کننده به اعلان‌های نوع XML Schema (XSD) تکیه کند، می‌تواند انواع اصلی را در طول تجزیه بازیابی کند. بدون یک schema، اطلاعات نوع به طور مؤثر در سند تبدیل‌شده از بین می‌رود.
آرایه‌های JSON چگونه به XML تبدیل می‌شوند؟
هر آیتم آرایه به یک عنصر XML هم‌رده با همان نام تگ تبدیل می‌شود. به عنوان مثال، آرایه JSON «colors»: [«red»، «blue»] دو عنصر تولید می‌کند: &lt;colors&gt;red&lt;/colors&gt; و &lt;colors&gt;blue&lt;/colors&gt;. برخی مبدل‌ها آرایه‌ها را در یک عنصر والد می‌پوشانند (مثلاً &lt;colorsList&gt;)، اما رویکرد عناصر هم‌رده تکراری رایج‌تر است و با قراردادی که JAXB، Jackson و fast-xml-parser استفاده می‌کنند مطابقت دارد.
در طول تبدیل با مقادیر null چه اتفاقی می‌افتد؟
یک null در JSON معمولاً به یک عنصر XML خالی تبدیل می‌شود — برای مثال، «middle_name»: null به &lt;middle_name/&gt; تبدیل می‌شود. برخی کتابخانه‌ها یک ویژگی xsi:nil="true" اضافه می‌کنند تا یک null صریح را نشان دهند، که وقتی سیستم هدف در برابر یک XSD schema اعتبارسنجی می‌کند مفید است. این مبدل به طور پیش‌فرض یک عنصر خالی خودبسته تولید می‌کند.
آیا می‌توانم XML را به JSON تبدیل کنم؟
بله، اما رفت‌وبرگشت همیشه متقارن نیست. ویژگی‌های XML مانند ویژگی‌ها، دستورالعمل‌های پردازش، توضیحات، محتوای مختلط و فضاهای نام معادل مستقیم JSON ندارند. تبدیل XML به JSON و برگشت به XML می‌تواند یک سند از نظر ساختاری متفاوت تولید کند. اگر به تبدیل XML به JSON نیاز دارید، از یک مبدل اختصاصی XML به JSON استفاده کنید که ویژگی‌ها و فضاهای نام را حفظ می‌کند.
چگونه با کلیدهای JSON که نام‌های عنصر XML معتبری نیستند برخورد کنم؟
نام‌های عنصر XML نمی‌توانند با یک رقم شروع شوند، شامل فضا باشند یا اکثر کاراکترهای خاص را دربرگیرند. اگر JSON شما کلیدی مانند «2024-data» یا «first name» دارد، مبدل باید آن را پاکسازی کند — معمولاً با پیشوند گذاشتن یک خط زیر یا جایگزین کردن کاراکترهای نامعتبر با خط زیر. خروجی مبدل را بررسی کنید و در صورت نیاز نام کلیدها را در JSON منبع تنظیم کنید اگر XML حاصل باید از اعتبارسنجی XSD عبور کند.
حداکثر اندازه JSON که این ابزار می‌تواند مدیریت کند چقدر است؟
مبدل در موتور JavaScript مرورگر شما اجرا می‌شود، بنابراین محدودیت عملی به حافظه موجود بستگی دارد. اکثر مرورگرهای مدرن اسناد JSON تا ۵۰ تا ۱۰۰ مگابایت را بدون مشکل مدیریت می‌کنند. برای فایل‌های بزرگ‌تر از آن، از یک مبدل جریانی مانند xmltodict پایتون یا یک ابزار خط فرمان استفاده کنید که داده را به صورت تدریجی پردازش می‌کند نه اینکه همه آن را در حافظه بارگذاری کند.
آیا خروجی XML معتبر است یا فقط از نظر شکلی درست است؟
خروجی همیشه XML از نظر شکلی درست است — تگ‌ها به درستی تودرتو هستند، کاراکترهای خاص escape شده‌اند و سند یک عنصر ریشه دارد. اینکه آیا خروجی معتبر است یا نه به schema هدف (XSD یا DTD) بستگی دارد. درستی شکلی یک تضمین ساختاری است؛ اعتبار مستلزم آن است که نام عناصر، ترتیب تودرتویی و انواع محتوا با یک تعریف schema خاص مطابقت داشته باشند.