YAML से JSON कनवर्टर

YAML को JSON में या JSON को YAML में बदलें, टाइप करते ही लाइव. पूरी तरह आपके ब्राउज़र में चलता है, जो भी आप पेस्ट करते हैं वह अपलोड नहीं होता.

कॉन्फ़िग फ़ाइलें, पोर्टेबल बनी

YAML, Docker Compose, Kubernetes, और CI कॉन्फ़िग में आम है.

YAML लोगों के पढ़ने और एडिट करने के लिए आसान है, लेकिन ज़्यादातर API और प्रोग्रामिंग भाषाओं को JSON चाहिए होता है. यह टूल दोनों के बीच पूरी तरह आपके ब्राउज़र में, दोनों दिशाओं में कन्वर्ट करता है.

क्या सपोर्टेड है

ब्लॉक और फ़्लो मैपिंग और सीक्वेंस, कोट की गई और प्लेन स्केलर वैल्यूज़, नंबर, बूलियन, null, और कमेंट्स. एंकर/एलियास, मल्टी-डॉक्यूमेंट फ़ाइलें, और मल्टीलाइन ब्लॉक स्केलर (| / >) सपोर्टेड नहीं हैं.

यह कैसे काम करता है

YAML से JSON इस पेज के लिए लिखे गए एक छोटे रिकर्सिव-डिसेंट पार्सर को चलाता है. यह पहले कमेंट्स हटाता है (सावधानी से, ताकि कोट की गई स्ट्रिंग के अंदर मौजूद # बचा रहे), हर लाइन का इंडेंटेशन रिकॉर्ड करता है, फिर उस तरीके से स्ट्रक्चर बनाता है जैसे YAML इसे डिफ़ाइन करता है: इंडेंटेशन नेस्टेड मैप्स खोलता है, - से शुरू होने वाली लाइनें सीक्वेंस बनाती हैं, और बाकी सब एक स्केलर होता है. स्केलर्स को उन्हीं नियमों से टाइप किया जाता है जो असली YAML पार्सर इस्तेमाल करते हैं: true/false बूलियन बन जाते हैं, ~ और null, null बन जाते हैं, बिना कोट के नंबर, नंबर बन जाते हैं, कोट की गई स्ट्रिंग्स स्ट्रिंग ही रहती हैं, और इनलाइन [a, b] या {k: v} फ़्लो सिंटैक्स भी हैंडल होता है. रिज़ल्ट को आपके चुने इंडेंट पर JSON.stringify से सीरियलाइज़ किया जाता है. JSON से YAML उल्टा है: JSON.parse इनपुट को वैलिडेट करता है, फिर एक एमिटर वैल्यू पर चलकर इंडेंटेड YAML लिखता है, और किसी भी ऐसी स्ट्रिंग को कोट करता है जो वरना नंबर, बूलियन, या null के तौर पर गलत पढ़ी जाती.

एक जान-बूझकर लिया गया फ़ैसला जानना ज़रूरी है: यह पार्सर सिर्फ़ लिटरल true और false को बूलियन मानता है. पुराने YAML 1.1 पार्सर yes, no, on, और off को भी कन्वर्ट कर देते हैं, यही वजह है कि नॉर्वे का कंट्री कोड NO मशहूर तरीके से कॉन्फ़िग फ़ाइलों में false बन जाता है ("नॉर्वे प्रॉब्लम"). यहां यह वैसी ही स्ट्रिंग बना रहता है जैसा यह दिखता है.

यह एक सबसेट पार्सर है, जिसे जान-बूझकर छोटा रखा गया है: एंकर और एलियास (&/*), मल्टी-डॉक्यूमेंट फ़ाइलें, और ब्लॉक स्केलर (| और >) सपोर्टेड नहीं हैं, इसलिए इन फ़ीचर्स का इस्तेमाल करने वाला कोई कॉम्प्लेक्स Kubernetes मैनिफ़ेस्ट सही तरीके से राउंड-ट्रिप नहीं करेगा. रोज़मर्रा के कॉन्फ़िग कन्वर्ज़न के लिए, यह वही कवर करता है जो आप असल में पेस्ट करते हैं.

कन्वर्ज़न हर कीस्ट्रोक पर पूरी तरह आपके टैब में होता है. किसी पार्सर सर्विस को कॉल नहीं किया जाता: आपके टाइप करते समय DevTools का Network पैनल खामोश रहता है, इसलिए होस्टनेम और सीक्रेट्स से भरी कॉन्फ़िग फ़ाइलें कभी आपकी मशीन से बाहर नहीं जातीं.