YAML سے JSON کنورٹر
بائیں طرف YAML پیسٹ کریں، دائیں طرف JSON حاصل کریں۔ مکمل طور پر آپ کے براؤزر میں چلتا ہے — کوئی اپ لوڈ نہیں، کوئی سائن اپ نہیں۔
- بائیں ٹیکسٹ ایریا میں اپنا YAML پیسٹ کریں۔
- "JSON میں تبدیل کریں" پر کلک کریں۔ آؤٹ پٹ دائیں طرف ظاہر ہوتا ہے۔
- نتیجہ کاپی کریں یا data.json کے طور پر محفوظ کرنے کے لیے Download پر کلک کریں۔
- اگر تبدیلی ناکام ہو، تو ایرر پیغام غلط لائن کی نشاندہی کرتا ہے۔
یہ کیا کرتا ہے؟
YAML 1.2 دستاویزات کو مساوی JSON میں تبدیل کرتا ہے۔ میپنگز آبجیکٹس بنتے ہیں، سیکوینسز ایرے بنتے ہیں، اور اسکیلرز YAML قواعد کے مطابق نمبرز، بولینز، nulls یا سٹرنگز کے طور پر ٹائپ ہوتے ہیں۔ اینکرز اور ایلیئسز تبدیلی کے دوران حل ہو جاتے ہیں۔ ملٹی-دستاویز سٹریمز (`---` سے الگ) کو دستاویزات کے ایرے میں چپٹا کر دیا جاتا ہے۔
مثال
YAML ان پٹ:
name: Ada
tags:
- math
- logic
active: true JSON آؤٹ پٹ:
{
"name": "Ada",
"tags": [
"math",
"logic"
],
"active": true
} عام YAML غلطیاں اور انہیں کیسے ٹھیک کریں
YAML وائٹ سپیس کے لیے حساس ہے، جو زیادہ تر "پارس ناکام" پیغامات کا ذریعہ ہے۔ پارسر ناکامی کی لائن اور کالم کی نشاندہی کرتا ہے — یہ پیٹرنز تلاش کرنے کے لیے ہیں۔
- سپیسز کے بجائے ٹیبز۔ YAML 1.2 انڈینٹیشن کے لیے ٹیبز پر پابندی لگاتا ہے۔ ہر ٹیب کو سپیسز سے بدلیں — زیادہ تر ایڈیٹرز میں "ٹیبز کو سپیسز میں تبدیل" کمانڈ ہے۔
- مخلوط انڈینٹ سطحیں۔ 4 سپیس انڈینٹڈ بھائی کے تحت 2 سپیس انڈینٹڈ بچہ ناکام ہوگا۔ ایک انڈینٹ چوڑائی منتخب کریں (عام طور پر 2 سپیسز) اور پورے دستاویز میں مستقل طور پر استعمال کریں۔
- بولین جیسی نظر آنے والی سٹرنگز۔ YAML 1.1 میں `yes`, `no`, `on`, `off` بولین کے طور پر پارس ہوتے ہیں — ملکی کوڈز ("NO" پھندا) اور ورژن سٹرنگز میں حیران کن۔ ویلیو کوٹ کریں: `country: "NO"`۔ js-yaml ڈیفالٹ طور پر YAML 1.2 پر ہے جہاں یہ ٹھیک ہے، لیکن حقیقی دنیا کے ان پٹس پھر بھی متاثر ہوتے ہیں۔
- بغیر کوٹ کے خاص حروف۔ `- `, `:`, `?`, `&`, `*`, `!`, `|`, `>`, `\'`, `"`, `%`, `@`, `` ` `` سے شروع ہونے والی ویلیوز کو کوٹ کرنے کی ضرورت ہے۔ سب سے محفوظ پیٹرن: کسی بھی سٹرنگ کو کوٹ کریں جس میں اوقاف ہو۔
- غیر مکمل کوٹ۔ گمشدہ بند ہونے والی `"` یا `\'` پارسر کو باقی فائل کو اگلے کوٹ تک سٹرنگ کا حصہ سمجھنے پر مجبور کرتا ہے — عام طور پر اصل غلطی سے دور ایک گمراہ کن لائن نمبر پیدا کرتا ہے۔
- اینکر / ایلیئس بے میلی۔ غیر تعریف شدہ اینکر (`&name`) کا حوالہ دینے والے ایلیئسز (`*name`) پارس کی غلطی پیدا کرتے ہیں۔ یقینی بنائیں کہ ہر ایلیئس کے لیے دستاویز میں پہلے ایک میل کھاتا اینکر اعلان کیا گیا ہے۔
اکثر پوچھے جانے والے سوالات
کیا یہ "Norway problem" جیسی YAML 1.1 خاصیتوں کی حمایت کرتا ہے؟
نہیں — اور یہ جان بوجھ کر ہے۔ ہم YAML 1.2 موڈ میں js-yaml استعمال کرتے ہیں، جہاں بغیر کوٹ کا `NO` بولین false کے بجائے سٹرنگ "NO" کے طور پر پارس ہوتا ہے۔ اگر آپ کے ان پٹس YAML 1.1 بولینز پر منحصر ہیں، پیسٹ کرنے سے پہلے انہیں واضح طور پر کوٹ کریں۔ ایک ٹول میں دو وضاحتیں ملانا آپ کے ڈیٹا کو خاموشی سے غلط ترجمہ کرے گا۔
YAML اینکرز اور ایلیئسز کا کیا ہوتا ہے؟
وہ تبدیلی کے دوران حل ہو جاتے ہیں۔ نتیجہ JSON میں ڈپلیکیٹ شدہ ویلیوز سادہ ڈیٹا کے طور پر ہوتی ہیں — اینکرز JSON میں زندہ نہیں رہتے کیونکہ JSON میں مساوی ریفرنس سنٹیکس نہیں ہے۔ اگر ریفرنسز محفوظ کرنے کی ضرورت ہو تو JSON صحیح ٹارگٹ فارمیٹ نہیں ہے۔
کیا میں ملٹی-دستاویز YAML فائلوں کو تبدیل کر سکتا ہوں؟
جی ہاں۔ `---` سے الگ متعدد دستاویزات پر مشتمل YAML فائلیں JSON ایرے میں تبدیل کی جاتی ہیں، جس میں ہر دستاویز ایرے کا ایک عنصر بنتا ہے۔ اگر آپ کی فائل ایک ہی دستاویز ہے، تو یہ سب سے اوپر کی سطح پر ایک ہی JSON آبجیکٹ یا ویلیو میں تبدیل ہو جاتی ہے۔
میری تاریخ سٹرنگ ISO فارمیٹ میں کیوں آتی ہے؟
YAML کا ایک نیٹیو ٹائم سٹیمپ قسم ہے (`2025-12-31`)۔ پارسر اسے JavaScript Date کے طور پر پڑھتا ہے، جو JSON میں ISO 8601 سٹرنگ کے طور پر سیریلائز ہوتا ہے۔ اصل لٹرل ٹیکسٹ رکھنے کے لیے، اپنے YAML میں ویلیو کو کوٹ کریں: `release: "2025-12-31"`۔
کیا یہ حساس YAML کنفگز کے لیے محفوظ ہے؟
جی ہاں۔ سب کچھ آپ کے براؤزر میں چلتا ہے — آپ کا ان پٹ اس صفحے کے JavaScript کے ذریعے پارس اور کنورٹ ہوتا ہے، کسی سرور پر نہیں بھیجا جاتا۔ کوئی لاگز نہیں، خود ان پٹ پر کوئی اینالیٹکس نہیں، کوئی برقراری نہیں۔ براؤزر ڈویلپر ٹولز میں تصدیق کریں: Convert پر کلک کرنے پر کوئی نیٹ ورک درخواستیں نہیں چلتیں۔
یہ کتنا بڑا YAML فائل سنبھال سکتا ہے؟
آپ کے براؤزر کی میموری کی حد تک، لیکن ٹیکسٹ ایریا UI ~10 MB YAML سے اوپر سست محسوس ہونے لگتا ہے۔ بڑے ان پٹس کے لیے، حصوں میں تبدیل کریں یا کمانڈ لائن پر وہی لائبریری (js-yaml) استعمال کریں۔