आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप YAML को JSON में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
YAML से JSON
YAML 1.2 जानबूझकर JSON का सुपरसेट है, यानी हर JSON दस्तावेज़ पहले से मान्य YAML है, और यह बदलाव सिर्फ़ शॉर्टहैंड हटाकर वही डेटा फिर लिखता है। यही इसे डीबग करने के लिए उपयोगी बनाता है — JSON वे वैल्यू दिखाता है जो पार्सर ने बनाए, जो आपने टाइप किए वे अक्षर नहीं।
ज़्यादातर हैरानियाँ रिज़ॉल्यूशन की हैरानियाँ हैं — कोई वर्शन जो संख्या बन गया, कोई शब्द जो बूलियन बन गया। इनमें से कुछ भी YAML में नहीं दिखता, सब JSON में दिखता है।
YAML फ़ाइलें एक स्ट्रीम में कई दस्तावेज़ रख सकती हैं, --- से अलग किए हुए। Kubernetes मैनिफ़ेस्ट इसे हमेशा इस्तेमाल करते हैं। JSON के पास इसका कोई समकक्ष नहीं — JSON फ़ाइल एक वैल्यू है — तो पार्सर चुपचाप कोई दस्तावेज़ चुनने के बजाय मना कर देता है।
उपाय यांत्रिक है — फ़ाइल को --- मार्कर पर बाँट लीजिए और हर दस्तावेज़ अलग से बदलिए। शुरुआत में अकेला --- ठीक है, बीच में दूसरा दस्तावेज़ ही रोकता है।
कोई एंकर और उसकी एलियास कॉपी में बदल जाते हैं। जो .gitlab-ci.yml &defaults एक बार परिभाषित कर छह जॉब में एलियास करता है, वह JSON में छह पूरी कॉपी बनाता है, क्योंकि JSON के पास कहीं और परिभाषित वैल्यू को इशारा करने का कोई तरीक़ा नहीं।
मर्ज-की वह हिस्सा है जो लोगों को फँसाता है — << के बाद एलियास वाली पंक्ति YAML 1.1 की परंपरा है, YAML 1.2 कोर स्कीमा का हिस्सा नहीं, तो यह "<<" नाम की सादी की बन जाती है।
CloudFormation के शॉर्ट-फ़ॉर्म और दर्जनों दूसरे डायलेक्ट कस्टम टैग पर मतलब टिकाते हैं — !Ref myBucket, !GetAtt। पार्सर उन टैग को नहीं जानता, तो हर एक को उसकी सादी वैल्यू में बदल देता है — !Ref myBucket बन जाता है सादी स्ट्रिंग "myBucket"।
यह इस पेज का सबसे ख़तरनाक बदलाव है, क्योंकि नतीजा मान्य, प्रशंसनीय और ग़लत दिखता है। अगर आपकी YAML कस्टम टैग वाले किसी डायलेक्ट की है, यह कन्वर्टर वह अर्थ खो देगा।
YAML 1.1 yes, no, on, off को बूलियन मानता था, जहाँ से देश-कोड "no" गलती से false बन जाने की मशहूर समस्या आई। यहाँ इस्तेमाल पार्सर YAML 1.2 है, जिसका कोर स्कीमा सिर्फ़ true और false पहचानता है।
यह डिफ़ॉल्ट है, गारंटी नहीं — जिस फ़ाइल की पहली पंक्ति %YAML 1.1 डायरेक्टिव है, वह 1.1 की तरह पढ़ी जाती है, और तब on सच में true बन जाता है।
1.0 लिखी वैल्यू संख्या 1 बनती है, तो कोई तय किया गया वर्शन पूर्णांक बनकर अपना दशमलव खो देता है। 0755 लिखी वैल्यू 755 बनती है। स्रोत में किसी को कोट में रखने से वह स्ट्रिंग बनी रहती है।
बड़े पूर्णांक चुपचाप सटीकता खो देते हैं — YAML में कोई सीमा नहीं, JSON संख्या IEEE डबल है, तो 64-बिट पहचानकर्ता थोड़ा बदल सकता है। बड़े ID वाली फ़ाइल में उन्हें कोट में रखिए।
!!timestamp टैग वाली वैल्यू तारीख़ बनती है और फिर ISO 8601 स्ट्रिंग, UTC में सामान्यीकृत — तो माइनस-पाँच घंटे के ऑफ़सेट के साथ लिखी टाइमस्टैम्प शिफ़्ट होकर Z के साथ आती है।
!!binary वैल्यू बाइट में डिकोड होकर पोज़िशन-कुंजी वाले ऑब्जेक्ट के तौर पर सीरियलाइज़ होती है। बिना टैग वाली तारीख़ें साधारण स्ट्रिंग बनी रहती हैं, जो आमतौर पर सही चाहिए होता है।
दो एरर बदलाव पूरी तरह रोक देते हैं। एक ही मैपिंग में डुप्लिकेट की मना है — यह कई YAML टूल से ज़्यादा सख़्त है और आमतौर पर सही व्यवहार है।
दूसरा है इंडेंटेशन के लिए टैब का इस्तेमाल — YAML वहाँ टैब मना करता है। दोनों एरर असल में कन्वर्टर की मदद हैं — इनमें से किसी भी दिक़्क़त वाली फ़ाइल का व्यवहार पहले से इस पर निर्भर है कि उसे कौन-सा पार्सर पढ़ता है।
आउटपुट दो-स्पेस इंडेंट के साथ आता है, तो jq, JSON Schema validator और कोई भी HTTP क्लाइंट इसे सीधे पढ़ते हैं। वैलिडेशन इस सफ़र की सबसे मज़बूत वजह है — JSON Schema परिपक्व और व्यापक है।
यह YAML का विकल्प नहीं है। कमेंट चले जाते हैं, एंकर दोहराव में फैल जाते हैं, कस्टम टैग चुपचाप वाष्पित हो जाते हैं — YAML को स्रोत मानिए और JSON को उसकी झलक।
| YAML | JSON | |
|---|---|---|
| पूरा नाम | YAML Ain't Markup Language | JavaScript Object Notation |
| फ़ाइल एक्सटेंशन | .yaml, .yml | .json |
| मीडिया टाइप | application/yaml | application/json |
| पहली बार प्रकाशित | 2001 | 2001 |
| विनिर्देश | YAML 1.2 | RFC 8259 |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | हर ब्राउज़र |
| इसकी जगह विचारणीय | TOML | XML, NDJSON |
टिप्पणियाँ साथ नहीं जातीं। YAML में फ़ाइल के साथ समझाइश लिखी जा सकती है और JSON में उसके लिए कोई वाक्य-रचना ही नहीं, इसलिए हर समझाने वाली पंक्ति छूट जाती है — और चोट ठीक उन्हीं फ़ाइलों पर पड़ती है जिन पर टिप्पणियाँ लिखी जाती हैं: वह कॉन्फ़िगरेशन जिसे किसी और को सँभालना है।
कुछ नहीं खोता। YAML और JSON — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।
JSON को हर मौजूदा ब्राउज़र खोल लेता है। YAML को इतने भी नहीं। अगर फ़ाइल किसी वेब पेज या किसी फ़ॉर्म तक जा रही है, तो आम तौर पर इस कन्वर्ज़न की पूरी वजह यही है।
Visual Studio Code YAML और JSON — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
YAML 2001 में आया। यह YAML 1.2 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।
JSON 2001 से चला आ रहा है, और RFC 8259 में तय किया गया है। Visual Studio Code, jq और Postman इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।
नहीं। JSON वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।
कुछ नहीं खोता। YAML और JSON — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।
टिप्पणियाँ साथ नहीं जातीं। YAML में फ़ाइल के साथ समझाइश लिखी जा सकती है और JSON में उसके लिए कोई वाक्य-रचना ही नहीं, इसलिए हर समझाने वाली पंक्ति छूट जाती है — और चोट ठीक उन्हीं फ़ाइलों पर पड़ती है जिन पर टिप्पणियाँ लिखी जाती हैं: वह कॉन्फ़िगरेशन जिसे किसी और को सँभालना है।