टूल

मुफ़्त ऑनलाइन YAML फ़ॉर्मेटर और वैलिडेटर

अपने ब्राउज़र में YAML को फ़ॉर्मेट, वैलिडेट और ब्यूटीफ़ाई करें, और YAML व JSON के बीच कन्वर्ट करें। Docker Compose, Kubernetes और GitHub Actions कॉन्फ़िग के साथ काम करता है। कुछ भी कभी सर्वर पर नहीं भेजा जाता।

सभी पार्सिंग और कन्वर्शन आपके ब्राउज़र में स्थानीय रूप से होते हैं। आपका YAML और JSON कभी अपलोड, स्टोर या लॉग नहीं किया जाता।

YAML क्या है?

YAML (YAML Ain't Markup Language) एक मानव-पठनीय डेटा सीरियलाइज़ेशन फ़ॉर्मेट है जिसे लिखने और पढ़ने में आसान बनाया गया है। इसका साफ़-सुथरा, इंडेंटेशन-आधारित सिंटैक्स कई आधुनिक कॉन्फ़िगरेशन फ़ाइलों में XML की जगह ले चुका है, और Docker Compose, Kubernetes, GitHub Actions, Ansible, और Helm जैसे टूल्स को पावर करता है। YAML, JSON का एक सुपरसेट भी है, इसलिए हर वैध JSON डॉक्यूमेंट वैध YAML भी होता है — जिससे दोनों फ़ॉर्मेट के बीच कन्वर्जन ज़्यादातर रोज़मर्रा के कॉन्फ़िगरेशन डेटा के लिए सीधा और लॉसलेस हो जाता है।

YAML सिंटैक्स गाइड

key: value स्केलर्स — एक साधारण की/वैल्यू पेयर। मल्टीलाइन स्ट्रिंग्स के लिए | (लिटरल, न्यूलाइन बनाए रखता है) या > (फ़ोल्डेड, लाइनों को जोड़ता है) का उपयोग होता है।
- item लिस्ट्स — हर आइटम अपनी लाइन पर, डैश और स्पेस के साथ शुरू होता है।
parent: child: x नेस्टेड डिक्शनरी — पदानुक्रम को केवल इंडेंटेशन के ज़रिए व्यक्त करती हैं।
# comment कमेंट्स — # के बाद आने वाली हर चीज़ को पार्सर द्वारा नज़रअंदाज़ किया जाता है।
null / true / false विशेष वैल्यू — null, true, और false को टाइप्ड वैल्यू के रूप में पहचाना जाता है, स्ट्रिंग के रूप में नहीं।
&anchor / *alias एंकर और अलियास — एक नोड को &anchor के साथ एक बार परिभाषित करें और *alias के साथ दोबारा उपयोग करें।
महत्वपूर्ण: YAML इंडेंटेशन के लिए टैब की अनुमति नहीं देता — केवल स्पेस। एक भी टैब पूरे डॉक्यूमेंट को अमान्य बना देता है।

YAML बनाम JSON: कब किसका उपयोग करें

YAML

हाथ से लिखी और एडिट की जाने वाली कॉन्फ़िगरेशन फ़ाइलों के लिए YAML का उपयोग करें। यह कमेंट्स को सपोर्ट करता है, ज़्यादा पठनीय है, और Docker Compose, Kubernetes, GitHub Actions, Ansible, और Helm के लिए स्टैंडर्ड है।

JSON

APIs और ट्रांज़िट में डेटा के लिए JSON का उपयोग करें। यह तेज़ी से पार्स होता है, इसमें कोई टाइप अस्पष्टता नहीं होती, और यह REST APIs, package.json, और tsconfig.json के पीछे का फ़ॉर्मेट है।

सामान्य YAML त्रुटियाँ और उन्हें कैसे ठीक करें

  1. इंडेंटेशन के लिए स्पेस की जगह टैब का उपयोग करना — हर टैब को स्पेस से बदलें, क्योंकि YAML टैब को मना करता है।
  2. असंगत इंडेंटेशन — पूरे डॉक्यूमेंट में हर नेस्टिंग लेवल पर स्पेस की समान संख्या बनाए रखें।
  3. बिना कोट किया गया कोलन वाला स्ट्रिंग — "12:30" या "http://example.com" जैसी वैल्यू को कोट्स में लपेटें।
  4. अस्पष्ट बूलियन — yes, no, on, और off जैसी वैल्यू को true/false के रूप में पार्स किया जाता है; अगर आपका मतलब लिटरल शब्दों से है तो उन्हें कोट करें।
  5. बिना कोट किए वैल्यू में विशेष कैरेक्टर — @, #, और { जैसे कैरेक्टर के लिए वैल्यू को कोट्स में लपेटना ज़रूरी है।

अक्सर पूछे जाने वाले प्रश्न

नहीं। YAML इंडेंटेशन के लिए टैब कैरेक्टर को सख्ती से मना करता है — आपको स्पेस का ही उपयोग करना होगा। यह "अमान्य YAML" त्रुटियों के सबसे सामान्य कारणों में से एक है। अगर आपका एडिटर टैब डालता है, तो उसे टैब को स्पेस में कन्वर्ट करने के लिए कॉन्फ़िगर करें (आमतौर पर प्रति लेवल 2)। इस पेज पर मौजूद फ़ॉर्मेटर हमेशा स्पेस आउटपुट करता है, इसलिए अपनी फ़ाइल को इससे चलाने से गलती से लगे टैब अपने आप ठीक हो जाते हैं।

दोनों मल्टीलाइन स्ट्रिंग्स को पेश करते हैं लेकिन लाइन ब्रेक को अलग तरह से हैंडल करते हैं। लिटरल ब्लॉक स्केलर | न्यूलाइन को बिल्कुल वैसा ही बनाए रखता है जैसा लिखा गया है, इसलिए हर लाइन अपनी लाइन पर रहती है — स्क्रिप्ट्स या फ़ॉर्मेटेड टेक्स्ट के लिए आदर्श। फ़ोल्डेड ब्लॉक स्केलर > लाइनों को स्पेस के साथ जोड़ता है, ब्लॉक को एक ही लाइन में समेटता है जबकि खाली लाइनों को पैराग्राफ ब्रेक मानता है — यह लंबे गद्य के लिए उपयोगी है जिसे आप सोर्स में रैप करना चाहते हैं लेकिन एक लाइन के रूप में स्टोर करना चाहते हैं।

हाँ। YAML 1.2 के अनुसार, हर वैध JSON डॉक्यूमेंट एक वैध YAML डॉक्यूमेंट भी है, क्योंकि YAML का फ़्लो सिंटैक्स JSON के समान ही ब्रेसेस, ब्रैकेट्स, और कोटिंग नियमों का उपयोग करता है। इसका मतलब है कि आप JSON को सीधे YAML पार्सर में पेस्ट कर सकते हैं और यह काम करेगा, और यह दोनों फ़ॉर्मेट के बीच कन्वर्जन को भरोसेमंद बनाता है — जो कि इस पेज पर मौजूद YAML-से-JSON और JSON-से-YAML टैब बिल्कुल यही करते हैं।

YAML पार्सर कई शब्दों को — yes, no, on, off, true, false — बूलियन वैल्यू के रूप में समझते हैं। इसलिए बिना कोट किया गया स्केलर yes, बूलियन true के रूप में पढ़ा जाता है और JSON में उसी तरह सीरियलाइज़ किया जाता है। अगर आपको लिटरल स्ट्रिंग "yes" चाहिए (उदाहरण के लिए किसी देश कोड या उत्तर फ़ील्ड के लिए), तो इसे कोट्स में लपेटें: answer: "yes"। कोटिंग पार्सर को इसे बूलियन में बदलने के बजाय टेक्स्ट के रूप में बनाए रखने के लिए बाध्य करती है।