JSON سے XML کنورٹر
بائیں طرف JSON پیسٹ کریں، دائیں طرف اچھی طرح بنا ہوا XML حاصل کریں۔ @_ پریفکس والی کیز ایٹریبیوٹ بن جاتی ہیں۔ کوئی اپ لوڈ نہیں۔
- بائیں ٹیکسٹ ایریا میں JSON پیسٹ کریں۔
- "XML میں تبدیل کریں" پر کلک کریں۔ JSON کیز ایلیمنٹ بن جاتی ہیں؛ @_کیز ایٹریبیوٹ بن جاتی ہیں۔
- فارمیٹڈ XML کاپی یا ڈاؤن لوڈ کریں۔
- اپنے ڈیٹا کو ایک واحد روٹ کلید سے لپیٹیں — XML کو ایک ٹاپ-لیول ایلیمنٹ کی ضرورت ہے۔
یہ کیا کرتا ہے؟
fast-xml-parser کنونشن استعمال کرتے ہوئے JSON آبجیکٹ کو XML میں تبدیل کرتا ہے۔ آبجیکٹ پراپرٹیز چائلڈ ایلیمنٹ بنتی ہیں؛ `@_` پریفکس والی پراپرٹیز پیرنٹ پر ایٹریبیوٹ بنتی ہیں؛ ایرے ایک ہی ٹیگ نام کے ساتھ بار بار ہم زاد ایلیمنٹ بنتی ہیں۔ نمبرز، بولینز اور سٹرنگز ٹیکسٹ مواد کے طور پر خارج ہوتے ہیں۔ آؤٹ پٹ پڑھنے کی آسانی کے لیے انڈینٹ کیا جاتا ہے۔
مثال
JSON ان پٹ:
{
"root": {
"@_version": 1,
"name": "Ada",
"tags": ["math", "logic"]
}
} XML آؤٹ پٹ:
<root version="1">
<name>Ada</name>
<tags>math</tags>
<tags>logic</tags>
</root> عام JSON سے XML کے مسائل
XML ساخت کے بارے میں JSON سے زیادہ سخت ہے۔ ذیل کے پیٹرنز زیادہ تر حیرت انگیز آؤٹ پٹ کا احاطہ کرتے ہیں۔
- کوئی واحد روٹ نہیں۔ XML کو ٹھیک ایک روٹ ایلیمنٹ کی ضرورت ہے۔ متعدد ٹاپ-لیول کیز والے JSON آبجیکٹس متعدد روٹس پیدا کرتے ہیں، جو غلط XML ہے۔ اپنے ان پٹ کو ایک واحد کلید میں لپیٹیں: `{"root": {"a":1, "b":2}}`۔
- ٹاپ-لیول ایرے۔ JSON ایرے `[{"a":1},{"a":2}]` کے پاس استعمال کرنے کے لیے کوئی روٹ ایلیمنٹ نام نہیں۔ اسے لپیٹیں: `{"items": [{"a":1},{"a":2}]}`۔ پھر ہر ایرے انٹری ایک `<items>` ایلیمنٹ بنتی ہے۔
- سپیسز یا علامات والے ایلیمنٹ نام۔ XML ایلیمنٹ نام میں سپیسز نہیں ہو سکتیں، عددی ہندسے سے شروع نہیں ہو سکتے، یا `:`, `/`, `<` وغیرہ شامل نہیں ہو سکتے۔ تبدیل کرنے سے پہلے JSON کیز کو سینیٹائز کریں — سپیسز کو `_` سے بدلیں، ہندسوں کو حرف سے پریفکس کریں۔
- ایٹریبیوٹس بمقابلہ ایلیمنٹس۔ ایک JSON کلید `id` چائلڈ ایلیمنٹ `<id>1</id>` بن جاتی ہے۔ اسے ایٹریبیوٹ (`<user id="1">`) بنانے کے لیے کلید کو `@_` سے پریفکس کریں: `{"user":{"@_id":1}}`۔ آؤٹ پٹ پر پریفکس ہٹا دیا جاتا ہے۔
- null ویلیوز۔ JSON `null` خالی ایلیمنٹ (`<x/>`) بن جاتا ہے۔ اگر آپ کو اسے مکمل طور پر چھوڑنا ہے، تبدیل کرنے سے پہلے اپنے JSON سے null ویلیوز کو ہٹا دیں۔
- متن میں خاص حروف۔ XML خود بخود `<`, `>`, `&`, `"`, اور `\'` کو ایسکیپ کرتا ہے۔ آپ کی JSON سٹرنگ `"<b>hi</b>"` متن `<b>hi</b>` بنتی ہے، نیسٹڈ ایلیمنٹس نہیں۔ اگر حقیقی نیسٹنگ چاہیے تو درمیانی JSON ساخت استعمال کریں۔
اکثر پوچھے جانے والے سوالات
XML اعلان `<?xml version="1.0"?>` کیسے حاصل کروں؟
اسے خود آؤٹ پٹ کے آغاز میں شامل کریں — کنورٹر اعلان نہیں نکالتا۔ UTF-8 XML کے لیے اعلان تکنیکی طور پر اختیاری ہے لیکن عام طور پر شامل کیا جاتا ہے: `<?xml version="1.0" encoding="UTF-8"?>` کے بعد آپ کا تبدیل شدہ XML۔
کیا JSON ایرے دہرائے گئے ایلیمنٹس کے طور پر محفوظ ہیں؟
جی ہاں۔ `{"tags":["a","b"]}` `<tags>a</tags><tags>b</tags>` بن جاتا ہے — ایک ہی ٹیگ کے ساتھ دو ہم زاد، جو دہرائی گئی قدر کی معیاری XML نمائندگی ہے۔
کیا میں XML میں JSON-سٹائل نیسٹڈ ایرے حاصل کر سکتا ہوں؟
براہ راست نہیں۔ XML میں کوئی نیٹیو ایرے تصور نہیں ہے؛ صرف دہرائے گئے ہم زاد۔ JSON میں نیسٹڈ ایرے ایک چپٹی XML ساخت بن جاتے ہیں جہاں سیاق و سباق گروپ بندی کا تعین کرتا ہے۔ اس ٹول کے ذریعے XML → JSON → XML راؤنڈ-ٹرپ راؤنڈ-ٹرپ ایبل سب سیٹ کو محفوظ رکھتا ہے۔
تاریخیں کیسے ہینڈل ہوتی ہیں؟
JSON میں Date قسم نہیں — تاریخیں عام طور پر پہلے ہی ISO 8601 سٹرنگز ہوتی ہیں۔ وہ بغیر تبدیلی کے ایلیمنٹ ٹیکسٹ مواد بن جاتی ہیں۔ اگر آپ کا XML ڈاؤن سٹریم خاص تاریخ فارمیٹ کی توقع رکھتا ہے، تو یقینی بنائیں کہ JSON وہ فارمیٹ استعمال کرے۔
کیا میرا JSON اپ لوڈ ہوتا ہے؟
نہیں۔ سب کچھ آپ کے براؤزر میں چلتا ہے — آپ کا ان پٹ اس صفحے کے JavaScript کے ذریعے پارس اور تبدیل ہوتا ہے اور کبھی کسی سرور پر نہیں بھیجا جاتا۔
کیا JSON → XML → JSON راؤنڈ-ٹرپنگ میرے ڈیٹا کو محفوظ رکھے گا؟
@_ ایٹریبیوٹ کنونشن کے ساتھ معمول کے سٹرکچرڈ ڈیٹا کے لیے، جی ہاں — معنویاتی طور پر۔ کچھ ایج کیسز (مخلوط متن + چائلڈ ایلیمنٹس، ایٹریبیوٹ ترتیب بمقابلہ ایلیمنٹ ترتیب) معیاری ہو سکتے ہیں۔ اگر بالکل بائٹ-مساوی ہونا اہم ہے، XML کے ذریعے راؤنڈ-ٹرپ نہ کریں۔