← सभी टूल

JSON से YAML कनवर्टर

ब्राउज़र में JSON को YAML और YAML को JSON में तुरंत बदलें। केवल लोकल और प्राइवेट — कमेंट, टाइप, इंडेंटेशन और एंकर के नोट्स सहित।

अपने ब्राउज़र में JSON को YAML और YAML को JSON में बदलें

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

गहरे इंडिगो पृष्ठभूमि पर प्रकाश के अमूर्त ब्रेस साफ़ इंडेंटेड कॉन्फ़िगरेशन परतों में रूपांतरित होते हुए
JSON संरचना इंडेंटेशन-आधारित YAML में खुलती हुई।

JSON क्या है और यह कहाँ रहता है

JSON (JavaScript Object Notation) एक सख्त, कोष्ठक-और-ब्रेस फ़ॉर्मेट है जो पहले मशीनों के लिए बना है। हर ऑब्जेक्ट {} में लिपटा है, हर ऐरे [] में, की और स्ट्रिंग वैल्यू डबल-कोटेड हैं, और आइटम कॉमा से अलग होते हैं। यह REST और GraphQL API का डिफ़ॉल्ट वायर फ़ॉर्मेट है, अधिकांश webhook का बॉडी, NoSQL दस्तावेज़ों का आकार, और वह चीज़ जो आपकी fetch कॉल लौटाती है। लगभग हर भाषा इसे मूल रूप से पार्स करती है, जो कि बिल्कुल यही वजह है कि इसने API लेयर जीती: JavaScript में JSON.parse, Python मानक लाइब्रेरी में json, और हर जगह समकक्ष। इसकी कीमत यह है कि JSON हाथ से लिखने में verbose है और टिप्पणियाँ नहीं देता, इसलिए यह उन फ़ाइलों के लिए खराब फ़ॉर्मेट है जिन्हें कोई इंसान पूरे दिन संपादित करता है।

YAML क्या है और यह कहाँ रहता है

YAML (YAML Ain't Markup Language) विपरीत प्राथमिकता के लिए बना था: पहले इंसान। यह कोष्ठकों और कोट्स को हटा देता है, नेस्टिंग व्यक्त करने के लिए इंडेंटेशन का इस्तेमाल करता है, और आपको # से टिप्पणियाँ लिखने देता है। वह पठनीयता ही कारण है कि यह कॉन्फ़िगरेशन की साझा भाषा बन गई। Docker Compose फ़ाइलें, Kubernetes मेनिफेस्ट, GitHub Actions और GitLab CI वर्कफ़्लो, Ansible प्लेबुक, और अनगिनत ऐप कॉन्फ़िग फ़ाइलें सब YAML हैं। एक विशिष्ट YAML दस्तावेज़ समकक्ष JSON से काफ़ी छोटा और pull request में diff करना कहीं आसान होता है। उस सुंदरता की कीमत है नाज़ुकता, जहाँ कन्वर्ज़न दिलचस्प होता है।

वे मुख्य अंतर जो कन्वर्ज़न के लिए मायने रखते हैं

तीन अंतर लगभग हर कन्वर्ज़न निर्णय चलाते हैं। पहला, YAML में व्हाइटस्पेस महत्त्वपूर्ण है और JSON में अर्थहीन। YAML संरचना दर्शाने के लिए स्पेस का इस्तेमाल करता है — कभी टैब नहीं — इसलिए एक गलत तरीके से संरेखित स्पेस किसी दस्तावेज़ का अर्थ चुपचाप बदल सकता है। JSON को इंडेंटेशन की बिल्कुल परवाह नहीं है। दूसरा, YAML टिप्पणियों का समर्थन करता है और JSON नहीं करता। YAML की कोई भी # टिप्पणी JSON बनाते समय बस गायब हो जाती है, क्योंकि उसे रखने की कोई जगह नहीं है। तीसरा, YAML में समृद्ध, अप्रत्यक्ष टाइपिंग है। यह आसानी से तारीखें, टाइमस्टैम्प और कई वर्तनियों में null पढ़ता है, और अनकोटेड मानों से प्रकार का अनुमान लगाता है। JSON में एक छोटा, स्पष्ट प्रकार सेट है और कोई अस्पष्टता नहीं। यह भी ध्यान दें कि JSON तकनीकी रूप से YAML 1.2 का एक उपसमुच्चय है, इसलिए वैध JSON आमतौर पर YAML के रूप में साफ़ पार्स होता है, पर विपरीत की गारंटी नहीं है।

एक नेस्टेड डेटा ट्री सियान और सोने में दो चमकते संरचित फ़ॉर्मेट के बीच कन्वर्ट होता हुआ
दो फ़ॉर्मेट के रूप में व्यक्त एक ही डेटा ट्री।

कन्वर्ज़न की वे सावधानियाँ जिनका ध्यान रखें

राउंड-ट्रिपिंग हमेशा लॉसलेस नहीं होती, और यह जानना फ़ायदेमंद है कि चीज़ें कहाँ टूटती हैं:

  • नॉर्वे की समस्या। YAML 1.1 नियमों के तहत, बिना कोट का NO बूलियन false के रूप में पार्स होता है, और yes, on और off भी बूलियन बन जाते हैं। एक देश कोड या स्विच लेबल ध्यान दिए बिना true/false में बदल सकता है। जो मान आप स्ट्रिंग के रूप में चाहते हैं उन्हें कोट करें।
  • संख्या का जबरन रूपांतरण। 3.10 जैसा संस्करण अपना अंतिम शून्य खोकर 3.1 बन सकता है, और 1.0 एक संख्या बन जाती है तब भी जब आप टेक्स्ट चाहते थे। संस्करण स्ट्रिंग और ID कोट करें।
  • एंकर और एलियास गायब हो जाते हैं। YAML के &anchor और *alias संदर्भों का JSON में कोई समकक्ष नहीं है। एक अच्छा कन्वर्टर उन्हें उनके पूर्ण मान में विस्तारित करता है, इसलिए डेटा सही है पर डी-डुप्लीकेशन खो जाती है — JSON से YAML से JSON वापस जाने पर मूल एंकर फिर से नहीं बनेंगे।
  • टिप्पणियाँ और ब्लॉक स्केलर। JSON में जाने पर टिप्पणियाँ हटा दी जाती हैं। मल्टी-लाइन ब्लॉक स्केलर (| और >) \n एस्केप के साथ साधारण JSON स्ट्रिंग में ढह जाते हैं, इसलिए दृश्य फ़ॉर्मेटिंग इरादा खो जाता है।
  • YAML पर वापस जाने पर इंडेंटेशन। JSON इंडेंटेशन एनकोड नहीं करता, इसलिए कन्वर्टर एक सुसंगत शैली चुनता है। टैब-संवेदनशील टूल में पेस्ट करने से पहले इसकी समीक्षा करें।

लोकल-ओनली क्यों मायने रखता है

कॉन्फ़िग फ़ाइलें और API पेलोड बिल्कुल वह चीज़ें हैं जो किसी अजीब सर्वर पर अपलोड नहीं होनी चाहिए: वे अक्सर होस्टनेम, टोकन, आंतरिक सेवा नाम या ग्राहक डेटा ले जाती हैं। यह कन्वर्टर आपके ब्राउज़र में JavaScript के साथ पार्स-और-इमिट चरण चलाता है। कुछ भी बैकएंड को नहीं भेजा जाता, कुछ भी लॉग नहीं होता, और एक बार पेज लोड होने पर टूल ऑफ़लाइन काम करता है। किसी Kubernetes secret या CI वर्कफ़्लो को इस विश्वास के साथ पेस्ट करें कि वह आपकी मशीन पर रहता है।

संबंधित टूलिंग चाहिए? डेटा कन्वर्टर का पूरा सेट देखें, गंदे इनपुट को JSON फ़ॉर्मेटर से साफ़ करें, और जब भी आपको API दुनिया और कॉन्फ़िग दुनिया के बीच जाना हो यहाँ वापस आएँ।

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

क्या मेरा डेटा कहीं अपलोड होता है?

नहीं। कन्वर्ज़न पूरी तरह आपके ब्राउज़र में लोकल JavaScript का इस्तेमाल करके होता है। आपका JSON या YAML कभी किसी सर्वर पर नहीं भेजा जाता, इसलिए secrets और कॉन्फ़िग फ़ाइलें निजी रहती हैं।

मेरा YAML मान true या false अचानक क्यों बदल गया?

YAML 1.1 बिना कोट के yes, no, on और off जैसे शब्दों को बूलियन मानता है — नॉर्वे की समस्या। जो भी मान आप स्ट्रिंग के रूप में चाहते हैं उन्हें कोट में लपेटें ताकि वे कन्वर्ज़न में टेक्स्ट के रूप में बचे रहें।

YAML को JSON में कन्वर्ट करने पर मेरी टिप्पणियों का क्या होता है?

JSON में कोई टिप्पणी सिंटैक्स नहीं है, इसलिए कन्वर्ज़न के दौरान सभी हैश टिप्पणियाँ हटा दी जाती हैं। अगर आपको नोट संरक्षित रखने हैं, तो अपनी अधिकारिक कॉपी YAML में रखें।

क्या YAML एंकर और एलियास संरक्षित रहते हैं?

उन्हें उनके पूर्ण मानों में विस्तारित किया जाता है क्योंकि JSON में कोई संदर्भ तंत्र नहीं है। डेटा सही रहता है, पर YAML पर वापस कन्वर्ट करने पर डी-डुप्लीकेशन पुनर्प्राप्त नहीं होती।

क्या मैं YAML से JSON के साथ-साथ JSON को YAML में भी कन्वर्ट कर सकता हूँ?

हाँ, टूल दोनों दिशाओं में काम करता है। JSON पाएँ YAML पेस्ट करने पर, या YAML पाएँ YAML पेस्ट करने पर, और कन्वर्टर दूसरे फ़ॉर्मेट का पता लगाकर उसे इमिट करता है।

टैब इस्तेमाल करने पर YAML क्यों टूट जाता है?

YAML इंडेंटेशन के लिए स्पेस की माँग करता है और टैब अस्वीकार करता है। अगर कोई पेस्ट पार्स करने में विफल हो, तो टैब को स्पेस से बदलें और इंडेंटेशन को सुसंगत रखें।