JSON سے YAML کنورٹر
JSON کو Kubernetes، Docker Compose، GitHub Actions یا Ansible کے لیے صاف اور انسان دوست YAML میں بدلیں، انڈینٹیشن، انداز اور کوٹس پر مکمل کنٹرول کے ساتھ۔
آپ کے براؤزر میں چلتا ہےسائن اپ کی ضرورت نہیںکچھ اپ لوڈ نہیں ہوتا
JSON سے YAML استعمال کرنے کا طریقہ
- JSON پہلے خانے میں پیسٹ کریں یا
.jsonفائل کھولیں۔ - ٹائپ کرتے ہی YAML آؤٹ پٹ خانے میں ظاہر ہوتا ہے۔
- انڈینٹ (2 یا 4 اسپیس) اور انداز منتخب کریں: block (ہر کی ایک لائن میں) یا کسی خاص nesting لیول سے flow (
{a: 1}/[x, y])۔ - کوٹنگ کا انداز منتخب کریں اور حروفِ تہجی کی ترتیب چاہیں تو کیز ترتیب دیں پر نشان لگائیں۔
- YAML کاپی یا ڈاؤن لوڈ کریں۔ غلط JSON اس کی لائن، کالم اور ممکنہ وجہ کے ساتھ رپورٹ ہوتا ہے۔
JSON کو YAML میں کیوں تبدیل کریں؟
JSON مشینوں اور APIs کے لیے بہترین ہے، لیکن YAML انسانوں کے لیے پڑھنا اور ایڈٹ کرنا آسان ہے: نہ بریسز، نہ لازمی کوٹس، اور کمنٹس کی سپورٹ۔ زیادہ تر انفراسٹرکچر ٹولز، بشمول Kubernetes، Helm، Docker Compose، GitHub Actions، GitLab CI اور Ansible، YAML میں کنفیگر ہوتے ہیں، جبکہ جس ڈیٹا سے آپ شروع کرتے ہیں (API آؤٹ پٹ، kubectl get -o json، Terraform state) وہ اکثر JSON ہوتا ہے۔
Block بمقابلہ flow انداز
Block انداز ہر کی اور فہرست آئٹم کو اپنی لائن میں رکھتا ہے اور کنفیگ فائلوں کے لیے روایتی انتخاب ہے۔ Flow انداز JSON کی طرح اِن لائن {} اور [] استعمال کرتا ہے اور چھوٹے آخری سٹرکچرز کو کمپیکٹ رکھتا ہے۔ «لیول 2 سے Flow» اوپر کے دو لیولز کو block انداز میں رکھتا ہے اور اس سے گہری ہر چیز کو اِن لائن کرتا ہے، جو ports یا env vars جیسے چھوٹے آبجیکٹس کی لمبی فہرستوں کے لیے اچھا کام کرتا ہے۔
محفوظ کوٹنگ
جن سٹرنگز کو YAML پارسر غلط پڑھ سکتا ہے وہ خودکار طور پر کوٹ ہوتی ہیں: جیسے 'no'، 'on'، '1.0'، 'null'، شروع میں * یا & والی سٹرنگز، اور : پر مشتمل سٹرنگز۔ اگر آپ کی سٹائل گائیڈ ہر سٹرنگ کو کوٹ کرنے کا تقاضا کرتی ہے تو ہمیشہ سنگل یا ہمیشہ ڈبل منتخب کریں۔
YAML 1.1 بمقابلہ 1.2 کی الجھنیں
یہ کنورٹر موجودہ سپیک YAML 1.2 کی پیروی کرتا ہے۔ بہت سے پرانے ٹولز (PyYAML، Ruby کا Psych، Kubernetes اور Ansible کے کچھ ورژن) اب بھی YAML 1.1 پڑھتے ہیں، جہاں اصول مختلف ہیں:
- ناروے کا مسئلہ: YAML 1.1 میں
country: noکا مطلبfalseہے، اس لیے ناروے کا کنٹری کوڈNOغائب ہو جاتا ہے۔ یہیyes،on،off،yاورnکے ساتھ ہوتا ہے۔ YAML 1.2 صرفtrueاورfalseکو بولین مانتا ہے۔ - Octal نمبرز:
0755ورژن 1.1 میں octal ہے لیکن 1.2 میں سادہ اعشاری، جو0o755استعمال کرتا ہے۔ احتیاطاً فائل موڈز کو کوٹ کریں۔ - Sexagesimal نمبرز: 1.1 میں
22:30نمبر 1350 کے طور پر پارس ہو سکتا ہے۔ اوقات اور پورٹ میپنگز جیسے"8080:80"کو کوٹ کریں۔
JSON → YAML سمت مبہم سٹرنگز ('no'، 'on'، 'y') کو خودکار طور پر کوٹ کرتی ہے، اس لیے بننے والا YAML دونوں ورژنز میں ایک جیسا پڑھا جاتا ہے۔
اکثر پوچھے جانے والے سوالات
کیا تبدیلی بغیر نقصان کے ہے؟
کچھ سٹرنگز کوٹ میں کیوں ہیں اور کچھ نہیں؟
'yes'، '123' یا خاص کریکٹرز والی سٹرنگز۔ باقی سب پڑھنے میں آسانی کے لیے سادہ رہتا ہے۔کیا میں آؤٹ پٹ میں کمنٹس شامل کر سکتا ہوں؟
# comments شامل کر سکتے ہیں۔