JSON को YAML में और वापस बदलें
JSON और YAML के बीच रूपांतरण
JSON और YAML एक ही डेटा — मैप, सूची, स्ट्रिंग, संख्या, बूलियन और null — दो सिंटैक्स में बताते हैं। JSON API और पैकेज फ़ाइलों की भाषा है; YAML में Docker, Kubernetes, GitHub Actions और CI पाइपलाइनों की कॉन्फ़िग फ़ाइलें लिखी जाती हैं। यह कनवर्टर एक को दूसरे में तुरंत बदलता है और उन बारीकियों का ख़याल रखता है जिनमें लोग फँसते हैं: उद्धरण, इंडेंट और वे अजीब शब्द जिन्हें YAML बूलियन मानता है।
चरण
- 1 दिशा चुनें और अपना दस्तावेज़ ऊपर के बॉक्स में पेस्ट करें। परिणाम लिखते-लिखते नीचे दिखता है।
- 2 इंडेंट की चौड़ाई तय करें — YAML में और ज़्यादातर JSON स्टाइल गाइड में 2 स्पेस की परंपरा है।
- 3 परिणाम कॉपी करें, फ़ाइल के रूप में डाउनलोड करें, या वापसी-यात्रा जाँचने के लिए आउटपुट को नया इनपुट बनाएँ।
दो फ़ॉर्मैट के बीच क्या बदलता है
YAML घुंघराले और वर्ग कोष्ठक तथा ज़्यादातर उद्धरण हटाता है और संरचना के लिए इंडेंट इस्तेमाल करता है, इसलिए 40 पंक्तियों का JSON ऑब्जेक्ट 25 पंक्तियों का YAML दस्तावेज़ बन जाता है। कुंजियाँ उसी क्रम में रहती हैं। सूचियाँ डैश आइटम, नेस्टेड ऑब्जेक्ट इंडेंटेड ब्लॉक बनते हैं; खाली ऑब्जेक्ट या सूची {} या [] ही लिखी रहती है। उल्टी दिशा में YAML टिप्पणियाँ खो जाती हैं क्योंकि JSON में टिप्पणियाँ नहीं होतीं।
कुछ स्ट्रिंग्स उद्धरण में क्यों निकलती हैं
YAML में बिना उद्धरण yes, no, on, off, true या null बूलियन या null पढ़ा जाता है, और 123 या 1.0 संख्या। इनके जैसी दिखने वाली स्ट्रिंग उद्धरण में होनी चाहिए, वरना वापसी में उसका प्रकार बदल जाता है — क्लासिक उदाहरण देश कोड NO का false बन जाना। कनवर्टर ठीक इन्हीं स्ट्रिंग्स को उद्धरण में रखता है, साथ में शुरू या अंत में स्पेस, स्पेस के बाद कोलन या शुरू में विशेष वर्ण वाली सभी को; बाक़ी सब पठनीयता के लिए सादा रहता है।
बहु-पंक्ति स्ट्रिंग्स
लाइन ब्रेक वाली स्ट्रिंग YAML ब्लॉक स्केलर के रूप में लिखी जाती है: कुंजी की पंक्ति पर एक पाइप और नीचे इंडेंटेड टेक्स्ट, और स्ट्रिंग के अंत में न्यूलाइन न हो तो एक माइनस चिह्न। यही रूप Kubernetes मैनिफ़ेस्ट और CI फ़ाइलों में दिखता है, और यह ठीक उसी स्ट्रिंग में वापस पढ़ा जाता है।
इंडेंट और संगतता
कनवर्टर YAML 1.2 लिखता है, जिसे हर आधुनिक पार्सर पढ़ता है — PyYAML, js-yaml, Go yaml, Ruby Psych। नेस्टेड कुंजियाँ चुनी चौड़ाई से इंडेंट होती हैं; सूची के भीतर ऑब्जेक्ट की कुंजियाँ हर हाल में डैश के दो स्पेस बाद होती हैं, जैसा विशिष्टता चाहती है। टैब कभी इस्तेमाल नहीं होते।