इस पेज का कोड चालू नहीं हुआ।

index.html को सीधे किसी फ़ोल्डर से खोलने पर ब्राउज़र JavaScript मॉड्यूल रोक देता है, इसलिए कोई फ़ाइल चुनने पर कुछ नहीं होगा। इसके बजाय फ़ोल्डर को http पर सर्व कीजिए:

powershell -ExecutionPolicy Bypass -File serve.ps1

फिर http://localhost:8080/ खोलिए।

YAML से JSON — और JSON से वापस YAML

दोनों दिशाएँ, और हर दिशा की कीमत भी बताई जाती है। इनमें से कुछ भी किसी और के सर्वर में पेस्ट नहीं होता।

भाषा: हिन्दी
कोड देखें
यह टूल YAML और JSON फ़ाइलें कभी अपलोड नहीं करता। यहाँ कोई सर्वर है ही नहीं।

बदलना एक स्ट्रिंग पर की गई गणित है, और वह यहीं, इसी पेज पर होती है। दोनों पार्सर हाथ से लिखे हुए हैं और src/ में हैं — shared/parse-yaml.js और shared/parse-json.js — इसके अलावा कुछ नहीं। इस टूल में किसी भी तरह की नेटवर्क सुविधा है ही नहीं — न कुछ लाने को, न कुछ भेजने को — और यहाँ इसका वज़न इस साइट की लगभग हर दूसरी जगह से ज़्यादा है: एक YAML फ़ाइल आम तौर पर डिप्लॉयमेंट कॉन्फ़िग होती है, और डिप्लॉयमेंट कॉन्फ़िग आम तौर पर होस्टनेम, बकेट नाम और सीक्रेट से भरी होती है।

लाइव जाँच: जाँच जारी…

ऑफ़लाइन: जाँच जारी…

हमारी बात मानने की ज़रूरत नहीं: DevTools खोलिए, नेटवर्क टैब देखिए और कुछ बदलिए। किसी एक भी रिक्वेस्ट में आपके पेस्ट किए हुए का एक अक्षर नहीं जाता। या इंटरनेट काट दीजिए और फिर भी बदल लीजिए।

1 दिशा चुनिए

इंडेंट टैब सिर्फ़ JSON के लिए दिया जाता है। YAML स्पेस के हिसाब से तय होता है और उसमें टैब वैध इंडेंट नहीं है।

हर ऑब्जेक्ट की कुंजियाँ क्रम में लगा दीजिए कुंजियाँ जैसी पढ़ी जाती हैं उस हिसाब से, उनके कोड पॉइंट के हिसाब से नहीं, इसलिए item2 item10 से पहले आता है।

2 इसे भीतर चिपकाइए

खाली

3 नतीजा ले जाइए

अभी कुछ नहीं।

 

Markdown के रूप में देखें

YAML को अपलोड किए बिना JSON में कैसे बदलें

  1. दिशा चुनिए। YAML से JSON या JSON से YAML। मेन्यू के नीचे लिखी बात बताती है कि उस दिशा में क्या खोता है — आपके कुछ भी पेस्ट करने से पहले, बाद में नहीं।
  2. पेस्ट कीजिए, या फ़ाइल छोड़िए। जो कुछ आप चुनकर कॉपी कर सकते हैं वह सब चलता है। सिलेक्टर पर छोड़ी गई फ़ाइल को आपका अपना ब्राउज़र पढ़कर बॉक्स में डाल देता है — छोड़ने के लिए अपलोड वाला कोई कदम है ही नहीं — और .json या .yaml एक्सटेंशन दिशा भी अपने आप तय कर देता है।
  3. इंडेंट चुनिए। दो स्पेस, चार, या एक टैब। टैब सिर्फ़ JSON के लिए दिया जाता है: YAML स्पेस के हिसाब से तय होता है, और उसमें टैब वैध इंडेंट नहीं है।
  4. गड़बड़ी वहीं पढ़िए जहाँ गड़बड़ी है। यहाँ नाकाम होने वाला पार्सर “पोज़िशन 4193 पर अनपेक्षित टोकन” कहने के बजाय बताता है कि उसे क्या मिला और किस लाइन तथा किस कॉलम पर। आम तौर पर इतना ही काफ़ी होता है कि कॉन्फ़िग फ़ाइल कुछ और खोले बिना ठीक हो जाए।
  5. नतीजा ले जाइए। कॉपी कीजिए, या फ़ाइल के रूप में डाउनलोड कीजिए, जिसका नाम उसी फ़ॉर्मैट पर होगा जिसमें वह निकला।

सवाल

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

नहीं। इस पेज के दोनों पार्सर और दोनों प्रिंटर ऐसे फ़ंक्शन हैं जो आपके अपने ब्राउज़र में, आपके अपने हार्डवेयर पर चलते हैं। इस टूल में किसी भी तरह की नेटवर्क सुविधा नहीं है — यह कभी कुछ मँगाता नहीं और कभी कुछ भेजता नहीं — और पेज की Content-Security-Policy में वे सारे पते लिखे हैं जिनसे यह संपर्क कर सकता है, जिनमें से एक भी हमारा नहीं है। डिप्लॉयमेंट कॉन्फ़िग के लिए इसे इस्तेमाल करने की वजह भी यही है: उनमें होस्टनेम, बकेट नाम और कभी-कभी कोई सीक्रेट भरा होता है जिसे कोई हटाना चाहता था, और उसे किसी और के कन्वर्टर में पेस्ट करना उसे दे देना है।

YAML को JSON में बदलने पर क्या खोता है?

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

मेरे YAML में no लिखा है और JSON में स्ट्रिंग आई। क्यों?

क्योंकि वह स्ट्रिंग ही है, और यहाँ 1.1 नहीं बल्कि YAML 1.2 पढ़ा जाता है। YAML 1.1 में yes, no, on और off बूलियन थे, और यही वह मशहूर गड़बड़ी है जो नॉर्वे के देश कोड को false बना देती है। YAML 1.2 ने इसे छोड़ दिया और यह भी: टेक्स्ट के अलावा कुछ और सिर्फ़ true, false, null और ~ पढ़े जाते हैं। दूसरी दिशा में वे शब्द उद्धरण चिह्नों के साथ वापस लिखे जाते हैं, हालाँकि यहाँ बिना उनके भी वे टेक्स्ट ही पढ़े जाते — क्योंकि फ़ाइल को आगे जो खोलेगा वह शायद ऐसा न करे। PyYAML आज भी डिफ़ॉल्ट रूप से 1.1 ही इस्तेमाल करता है। सख्ती से पढ़ना और सँभलकर लिखना ही वह इकलौता मेल है जो दोनों तरफ़ सही रहता है।

क्या यह मेरी कुंजियों का क्रम बनाए रखता है?

हाँ, दोनों दिशाओं में, और यह सुनने में जितना लगता है उससे कठिन है। JSON.parse पर बना कोई कन्वर्टर पूर्णांक जैसी दिखने वाली कुंजियों को चुपचाप आगे खिसका देता है, तो {"10":a,"2":b} वापस {"2":b,"10":a} बनकर आता है। संख्याएँ वही अंक रखती हैं जो आपने टाइप किए, इसलिए बीस अंकों वाला कोई खाता नंबर अपने आखिरी तीन अंक डबल की वजह से नहीं खोता। अगर आप उन्हें क्रम में चाहते हैं तो एक चेकबॉक्स है, और वह कुंजियाँ जैसी पढ़ी जाती हैं उस हिसाब से क्रम लगाता है, न कि उनके कोड पॉइंट से।

क्या यह एक साथ कई YAML दस्तावेज़ बदल सकता है?

नहीं, और यह कोई एक चुनने के बजाय ऐसा कह देता है। --- से अलग की गई फ़ाइल में एक से ज़्यादा दस्तावेज़ होते हैं, और JSON में ऐसी कोई शक्ल नहीं है जिसका मतलब “कई दस्तावेज़” हो — ऐरे बनाना ऐसा दावा होता जो फ़ाइल ने कभी किया ही नहीं। इन्हें एक-एक करके बदलिए।

यहाँ YAML फ़ॉर्मैटर क्यों नहीं है?

क्योंकि YAML की कोई दबी हुई शक्ल ऐसी नहीं जिसे लिखना सार्थक हो — छोटी शक्ल फ़्लो स्टाइल है, जो पढ़ी नहीं जाती, और न पढ़ा जाना उस वजह के ठीक उलट है जिसके लिए फ़ाइल YAML में रखी जाती है। JSON, XML, HTML और CSS सजाना JSON फ़ॉर्मैटर का काम है, और वह YAML भी सजाता है।

फ़ाइल कितनी बड़ी हो सकती है?

यहाँ कोई सीमा रखी ही नहीं गई, क्योंकि उसके लिए पैसे देने वाला कोई सर्वर नहीं है। असली छत आपकी अपनी डिवाइस है: कुछ मेगाबाइट YAML ठीक रहता है, और बहुत लंबे दस्तावेज़ में पेज आपसे कीबोर्ड छीनने के बजाय आपके टाइप करने में ठहराव का इंतज़ार करता है और फिर बदलता है।

क्या यह मुफ़्त है, और क्या खाता चाहिए?

यह मुफ़्त है, और कोई खाता नहीं, कोई साइन-इन नहीं, कोई ट्रायल नहीं और आप कितना पेस्ट करें इसकी कोई सीमा नहीं। साइट पर विज्ञापन हैं, उन्हीं से इसका खर्च चलता है; विज्ञापनों को आपके टेक्स्ट के बारे में कुछ नहीं दिया जाता।

क्या यह ऑफ़लाइन चलता है?

हाँ। पेज एक बार लोड कीजिए, फिर इंटरनेट काट दीजिए और यह चलता रहता है। यही सबसे आसान तरीका भी है यह साबित करने का कि कुछ अपलोड नहीं हो रहा: जो टूल आपकी कॉन्फ़िग बदलने के लिए बाहर भेजता, वह तार निकालते ही रुक जाता।