UltKit

JSON سے YAML کنورٹر

JSON کو ایسے YAML میں تبدیل کریں جسے لوگ آسانی سے پڑھ سکیں، ریویو کر سکیں اور اس پر تبصرے لکھ سکیں۔ ‎.json فائلیں اپ لوڈ کریں اور انڈینٹ شدہ ‎.yaml حاصل کریں۔ اس میں وہی keys، وہی ویلیوز اور وہی ترتیب ہوگی، اور یہ ریپوزٹری میں رکھنے کے لیے تیار ہوگا۔

ڈیٹا کنورٹر

یا CSV, TSV, TXT … فائلیں یہاں ڈراپ کریں ·

زیادہ سے زیادہ 95 MB فی فائل· 20 فائلوں تک· 30 منٹ بعد حذف

آؤٹ پٹ

فائلیں ہمارے سرورز پر پروسیس ہوتی ہیں اور 30 منٹ بعد حذف ہو جاتی ہیں۔

اس ٹول کو استعمال کرنے کا طریقہ

  1. 1

    JSON فائلیں شامل کریں

    API ریسپانسز، ایکسپورٹ کی گئی سیٹنگز یا تیار کردہ مینی فیسٹس کو .json کی شکل میں اپ لوڈ کریں، زیادہ سے زیادہ 20 فائلیں اور ہر فائل 95 MB تک۔ ہر فائل میں ایک درست JSON ویلیو ہونی چاہیے۔

  2. 2

    ڈیفالٹ سیٹنگز برقرار رکھیں

    YAML پہلے ہی اس میں تبدیل کریں کے تحت منتخب ہے۔ کنفیگ فائل کے لیے کچھ اور بدلنے کی ضرورت نہیں؛ آؤٹ پٹ میں دو اسپیس کی انڈینٹیشن استعمال ہوتی ہے۔

  3. 3

    تبدیل کریں اور کمٹ کریں

    YAML میں تبدیل کریں دبائیں، .yaml فائلیں ڈاؤن لوڈ کریں، جہاں اگلے پڑھنے والے کو ضرورت ہو وہاں تبصرے شامل کریں اور کمٹ کر دیں۔

جواب

JSON کو YAML میں کیسے تبدیل کریں؟

.json فائل اپ لوڈ کریں اور YAML میں تبدیل کریں دبائیں۔ آبجیکٹس انڈینٹ شدہ key: value بلاکس بن جاتے ہیں، ارے ڈیشز والی فہرستیں بن جاتے ہیں، اور وہ اسٹرنگز جنہیں YAML غلط پڑھ سکتا ہے اپنے کوٹس برقرار رکھتی ہیں۔

کنفیگ فائلوں کے لیے JSON کو YAML میں کیوں تبدیل کریں

زیادہ تر JSON سافٹ ویئر بناتا ہے: API ریسپانس، سیٹنگز ایکسپورٹ یا جنریٹر کی آؤٹ پٹ۔ زیادہ تر YAML انسان سنبھالتے ہیں۔ یہ تبدیلی عموماً اس لمحے کی علامت ہوتی ہے جب ڈیٹا مشین کی آؤٹ پٹ نہیں رہتا اور ٹیم کی ملکیت بن جاتا ہے، جیسے Git میں چیک اِن کیا گیا ڈیپلائمنٹ مینی فیسٹ، CI پائپ لائن یا Ansible ویری ایبلز کا سیٹ۔

ایک عام صورت: آپ کلاؤڈ API کو کال کرتے ہیں، کسی وسائل کی 200 لائنوں کی JSON تفصیل ملتی ہے، اور آپ اسے انفراسٹرکچر کوڈ کے طور پر رکھنا چاہتے ہیں۔ تبدیلی سے بریکٹس اور کاماز کے بغیر فائل ملتی ہے، جہاں ایک لائن کی تبدیلی ایک لائن کا ڈف بناتی ہے اور آپ عجیب ویلیوز کی وضاحت تبصروں میں کر سکتے ہیں۔ یہی بات ٹیسٹ فکسچرز اور ان ترجمہ فائلوں پر لاگو ہے جنہیں غیر ڈویلپرز ایڈٹ کرتے ہیں۔ جب اسپریڈشیٹ یا رپورٹ کے لیے سادہ جدول چاہیے ہو تو JSON سے CSV زیادہ موزوں ہے۔

وہ ٹولز جن کی کنفیگ فائلیں YAML میں ہوتی ہیں

تبدیل شدہ YAML عموماً کہاں استعمال ہوتا ہے
ادارہتقاضاماخذ
GitHub Actionsورک فلوز .github/workflows میں .yml یا .yaml فائلوں کی شکل میں رہتے ہیںGitHub Docs
GitLab CI/CDپائپ لائن ریپازٹری کی روٹ میں .gitlab-ci.yml میں بیان کی جاتی ہےGitLab Docs
Docker Composeسروسز compose.yaml میں بیان ہوتی ہیں (پہلے docker-compose.yml)Docker Docs
Ansibleپلے بکس اور ویری ایبل فائلیں YAML میں لکھی جاتی ہیںAnsible Docs
Kubernetesمینی فیسٹس JSON یا YAML قبول کرتے ہیں؛ دستاویزات اور Helm چارٹس YAML استعمال کرتے ہیںKubernetes

مشکل ویلیوز کے ساتھ JSON سے YAML کی مثال

{"name":"api","version":"1.10","debug":false,"tags":["web","eu"],"country":"NO"} کی YAML آؤٹ پٹ
name: api
version: "1.10"
debug: false
tags:
  - web
  - eu
country: "NO"  # کوٹس کے بغیر NO کو false پڑھا جاتا ہے

YAML سے کیا ملتا ہے

  • # کے ساتھ تبصرے
  • کوڈ ریویو میں چھوٹے ڈف
  • زیادہ تر لائنوں میں بریکٹس، کاماز یا کوٹس نہیں
  • | بلاک اسکیلرز کے ساتھ کئی لائنوں کا متن

کن باتوں کا خیال رکھیں

  • انڈینٹیشن کا مطلب ہے، اس لیے ایک فالتو اسپیس ڈھانچہ بدل دیتی ہے
  • انڈینٹیشن کے لیے ٹیبز کی اجازت نہیں
  • بغیر کوٹس کی اسٹرنگز کو نمبر یا بولین سمجھا جا سکتا ہے
  • JSON کے مقابلے میں سست اور کم یکساں پارسرز

یہ مثال بتاتی ہے کہ بریکٹس کو محض ڈھونڈ کر بدل دینا کافی کیوں نہیں۔ ورژن 1.10 JSON میں اسٹرنگ ہے؛ YAML میں بغیر کوٹس لکھا جائے تو نمبر 1.1 سمجھا جائے گا۔ NO، ناروے کا ISO کوڈ، PyYAML جیسے YAML 1.1 پارسرز میں false پڑھا جائے گا۔ دونوں اپنے کوٹس برقرار رکھتے ہیں، جبکہ اصل نمبر اور بولین بغیر کوٹس رہتے ہیں۔

JSON اور YAML کا موازنہ

JSON

جاوا اسکرپٹ آبجیکٹ نوٹیشن

JSON منظم ڈیٹا کے لیے ہلکا پھلکا ٹیکسٹ فارمیٹ ہے، جسے Douglas Crockford نے 2000 کی دہائی کے اوائل میں مقبول کیا اور جو RFC 8259 اور ECMA-404 کے طور پر معیاری ہے۔ یہ آبجیکٹس، ارریز، اسٹرنگز، نمبرز، بولینز اور null کو سادہ، پڑھنے کے قابل نحو میں ظاہر کرتا ہے۔ یہ تقریباً ہر پروگرامنگ زبان میں ویب APIs، کنفیگریشن فائلوں اور ایپس کے درمیان ڈیٹا کے تبادلے کا ڈیفالٹ فارمیٹ ہے۔ اس میں تبصرے، تاریخیں یا اسکیمے بلٹ اِن نہیں، اور بڑی گہری فائلیں ویور کے بغیر پڑھنا مشکل ہوتا ہے۔

کمپریشن
–
شفافیت
–
اینیمیشن
–
متعارف ہونے کا سال
2001 · Douglas Crockford
JSON کنورٹر

YAML

YAML

YAML ("YAML Ain't Markup Language") انسانوں کے لیے آسان ڈیٹا فارمیٹ ہے جو پہلی بار 2001 میں جاری ہوا۔ یہ بریکٹس کی جگہ انڈینٹیشن استعمال کرتا ہے، کمنٹس کو سپورٹ کرتا ہے اور JSON کا سپر سیٹ ہے۔ یہ Docker Compose، Kubernetes، GitHub Actions اور بہت سی ایپلیکیشنز کی کنفیگریشن میں عام ہے۔ خالی جگہ پر انحصار کی وجہ سے ایک غلط جگہ پر اسپیس سے بھی یہ خراب ہو سکتا ہے، اور "no" یا تاریخوں جیسی کچھ ویلیوز کی تشریح غیر متوقع طور پر ہو سکتی ہے۔

کمپریشن
–
شفافیت
–
اینیمیشن
–
متعارف ہونے کا سال
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
YAML کنورٹر

لوگ JSON کو YAML میں اس وقت تبدیل کرتے ہیں جب تیار کردہ یا API کا ڈیٹا ایسی کنفیگ فائل بننا ہو جسے انسان سنبھالیں، پل ریکویسٹس میں ریویو کریں اور تبصروں کے ساتھ واضح کریں۔

JSON سے YAML کنورٹر کے بارے میں سوالات

کیا JSON پہلے سے ہی درست YAML ہے؟

YAML 1.2 کے تحت ہاں: 2009 کا ورژن اس طرح لکھا گیا تھا کہ ہر JSON دستاویز ایک YAML دستاویز بھی ہو۔ آپ JSON کو .yaml فائل میں پیسٹ کر سکتے ہیں اور زیادہ تر ٹولز اسے قبول کر لیں گے۔ تبدیلی کا مقصد پڑھنے میں آسانی ہے: بریکٹس، کوٹس اور کاماز کے بغیر بلاک اسٹائل وہ ہے جس کی ریویورز اور اگلے مینٹینر کو توقع ہوتی ہے۔

YAML میں کچھ ویلیوز کوٹس میں کیوں لکھی جاتی ہیں؟

کیونکہ کوٹس کے بغیر YAML انہیں مختلف قسم کی ویلیو سمجھ لے گا۔ 1.10 جیسی ورژن اسٹرنگ نمبر 1.1 بن جائے گی، اور پرانے پارسرز میں yes یا off بولین بن سکتے ہیں۔ جو اسٹرنگز نمبر، تاریخ یا بولین جیسی لگیں انہیں اسٹرنگ رہنے کے لیے کوٹس چاہییں، اس لیے محتاط تبدیلی انہیں برقرار رکھتی ہے۔

کیا تبدیلی کے بعد میں تبصرے شامل کر سکتا ہوں؟

جی ہاں، اور تبدیل کرنے کی ایک عام وجہ یہی ہے۔ لائن کے آخر میں یا الگ لائن پر # لکھ کر اپنا نوٹ لکھیں۔ JSON میں یہ بتانے کا کوئی طریقہ نہیں تھا کہ کوئی ویلیو کیوں رکھی گئی ہے؛ YAML میں ہے، جس سے ریویو اور ہینڈ اوور آسان ہو جاتے ہیں۔

میرا YAML ٹیب کریکٹر کی ایرر کیوں دیتا ہے؟

YAML اسپیسیفکیشن انڈینٹیشن کے لیے ٹیبز کی اجازت نہیں دیتی؛ صرف اسپیس معتبر ہیں۔ کنورٹر اسپیس لکھتا ہے، لیکن ٹیبز ڈالنے والا ایڈیٹر اگلی ایڈٹ پر فائل خراب کر سکتا ہے۔ اپنے ایڈیٹر کو .yaml فائلوں کے لیے اسپیس استعمال کرنے پر سیٹ کریں۔

کیا Kubernetes تبدیل شدہ مینی فیسٹ قبول کرے گا؟

kubectl JSON اور YAML دونوں پڑھتا ہے، اس لیے ڈیٹا ہر صورت میں وہی رہتا ہے؛ YAML ورژن بس وہ ہے جو زیادہ تر دستاویزات، Helm چارٹس اور کوڈ ریویوز میں استعمال ہوتا ہے۔ اگر بعد میں jq یا API کال کے لیے JSON واپس چاہیے ہو تو YAML سے JSON اسے الٹ دیتا ہے۔