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

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

powershell -ExecutionPolicy Bypass -File serve.ps1

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

JSON फ़ॉर्मैटर — सजाइए, दबाइए, या बदल दीजिए

JSON, XML, HTML, CSS और YAML, सजाए हुए या बदले हुए। कुछ भी किसी और के सर्वर में चिपकाया नहीं जाता।

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

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

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

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

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

1 काम चुनिए

भाषा अंदाज़ा सिर्फ़ एक शुरुआती बिंदु है, और उसे ठीक करना एक क्लिक का काम है।

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

सबसे बाहरी एलिमेंट का नाम XML के सिरे पर एक एलिमेंट होता है और JSON में नहीं होता, इसलिए एक गढ़ना ही पड़ता है।

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

खाली

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

अभी कुछ नहीं।

 

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

JSON को बिना अपलोड किए कैसे सजाएँ या बदलें

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

विस्तार से

JSON को किसी को सौंपे बिना कैसे सजाएँ JSON को अपने ही ब्राउज़र में कैसे सजाएँ, जाँचें और निचोड़ें - फ़ॉर्मैटर को आपकी फ़ाइल के बारे में क्या कभी नहीं बदलना चाहिए, त्रुटि का संदेश कैसे पढ़ें, और आप जिस साइट में उसे चिपकाते हैं वह क्यों मायने रखती है।

सवाल

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

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

क्या JSON सजाने से लेआउट के सिवा कुछ और भी बदलता है?

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

यह कौन-कौन सी भाषाएँ सजा सकता है?

JSON, XML, HTML, CSS और YAML। JSON, XML, HTML और CSS को चपटा भी निचोड़ा जा सकता है; YAML को नहीं, क्योंकि उसका छोटा रूप फ़्लो स्टाइल है, जो पढ़ा ही नहीं जाता। और न पढ़ा जाना उस वजह के ठीक उलट है जिसकी वजह से कोई फ़ाइल YAML में रखी जाती है। JavaScript जान-बूझकर इस सूची में नहीं है, और उसके बारे में नीचे वाला सवाल देखिए।

यह JavaScript, Python या SQL क्यों नहीं सजाता?

क्योंकि किसी प्रोग्रामिंग भाषा को सजाने का मतलब है उसे ढंग से पार्स करना, और जो फ़ॉर्मैटर लगभग सही निकलता है वह किसी फ़ॉर्मैटर के न होने से भी बुरा है, क्योंकि वह ऐसा कोड बनाता है जो देखने में ठीक लगता है और करता कुछ और है। JSON, XML, CSS और YAML के व्याकरण इतने छोटे हैं कि उन्हें हाथ से पढ़ा जा सके और ऐसे टेस्टों से जाँचा जा सके जिन्हें आप खुद चला सकते हैं। JavaScript का फ़ॉर्मैटर Prettier है, जो एक मेगाबाइट का पार्सर है, और उसकी जगह किसी वेब पेज पर नहीं, आपके एडिटर में है।

मेरी YAML में no लिखा था और JSON में वह स्ट्रिंग बनकर निकला। क्यों?

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

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

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

JSON को XML में बदलने में क्या खो जाता है?

खाली ऑब्जेक्ट, खाली ऐरे और खाली स्ट्रिंग का आपसी फ़र्क, क्योंकि ये तीनों एक खाली एलिमेंट बन जाते हैं। हर मान का प्रकार भी खो जाता है, क्योंकि XML में प्रकार होते ही नहीं। इसीलिए उलटी दिशा में बदलने पर सब कुछ स्ट्रिंग ही छोड़ देता है, यह तय करने के बजाय कि 8080 कोई संख्या थी। ऐरे दोहराया गया एलिमेंट बन जाता है, और यही अकेला आकार है जो वापस पढ़ा जा सकता है, और जिस कुंजी को एलिमेंट का नाम सँभाल न सके उसके अटपटे अक्षर बदल दिए जाते हैं, वरना ऐसा दस्तावेज़ निकलता जिसे कोई पार्सर पढ़ेगा ही नहीं।

क्या HTML का इंडेंट बदलने से पेज का दिखना बदल जाता है?

बदल सकता है, और यह उस बारे में ईमानदार है। दो इनलाइन एलिमेंट के बीच की खाली जगह दो शब्दों के बीच का स्पेस है, इसलिए उसे हिलाना मुफ़्त नहीं है। दो चीज़ें इसे काबू में रखती हैं। <pre> और <textarea> ठीक जैसे थे वैसे ही उतार दिए जाते हैं, और जिस एलिमेंट में टेक्स्ट के सिवा कुछ न हो वह एक ही पंक्ति में रहता है। बाकी सब सजाया जाता है।

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

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

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

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

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

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