JSON एस्केप / अनएस्केप
रॉ टेक्स्ट को JSON-सुरक्षित स्ट्रिंग में एस्केप करें, किसी JSON स्ट्रिंग को वापस सादे टेक्स्ट में अनएस्केप करें, या पूरे JSON दस्तावेज़ को मिनिफ़ाई और वैलिडेट करें। बैकस्लैश, कोट्स, न्यूलाइन, टैब और कंट्रोल कैरेक्टर JSON विनिर्देश के अक्षरशः अनुसार संभाले जाते हैं। सब कुछ आपके ब्राउज़र में चलता है — कुछ भी अपलोड नहीं होता।
हर मोड क्या करता है
| मोड | यह क्या करता है | उदाहरण |
|---|---|---|
| एस्केप | रॉ टेक्स्ट को एस्केप किए गए JSON स्ट्रिंग में बदलता है — बैकस्लैश, डबल कोट्स, न्यूलाइन, टैब और अन्य कंट्रोल कैरेक्टर उनके JSON एस्केप सीक्वेंस से बदल दिए जाते हैं ताकि टेक्स्ट को किसी JSON स्ट्रिंग के अंदर सुरक्षित रूप से रखा जा सके। | a"b → a\"b |
| अनएस्केप | एस्केपिंग को उलटता है — एक JSON-शैली की एस्केप की गई स्ट्रिंग (उसके चारों ओर के कोट्स के साथ या बिना) पढ़ता है और मूल टेक्स्ट लौटाता है, \n, \t, \", \\, \uXXXX और बाक़ी सभी को हल करते हुए। | caf\u00e9 → café |
| मिनिफ़ाई / वैलिडेट | पूरे JSON दस्तावेज़ को पार्स करता है और हर ग़ैर-ज़रूरी स्पेस व न्यूलाइन हटाकर उसे फिर से आउटपुट करता है। यदि JSON अमान्य है तो यह इसके बजाय पार्सर त्रुटि बताता है — इसलिए यह एक वैलिडेटर का भी काम करता है। | { "a": 1 } → {"a":1} |
एस्केप विकल्प
| विकल्प | यह क्या करता है | उदाहरण |
|---|---|---|
| डबल कोट्स में लपेटें | चारों ओर "…" जोड़ता है ताकि आउटपुट केवल एस्केप की गई सामग्री नहीं, बल्कि एक पूर्ण JSON स्ट्रिंग मान हो। | hi → "hi" |
| फ़ॉरवर्ड स्लैश एस्केप करें (/ → \/) | वैकल्पिक। कुछ एन्कोडर फ़ॉरवर्ड स्लैश को एस्केप करते हैं ताकि किसी JSON ब्लॉक से HTML स्क्रिप्ट एलिमेंट समय से पहले समाप्त न हो। डिफ़ॉल्ट रूप से बंद, क्योंकि JSON विनिर्देश इसकी माँग नहीं करता। | a/b → a\/b |
| ग़ैर-ASCII एस्केप करें (\uXXXX) | ASCII सीमा से ऊपर के हर कैरेक्टर को \uXXXX एस्केप में बदल देता है, जिससे शुद्ध-ASCII आउटपुट बनता है। डिफ़ॉल्ट रूप से बंद, क्योंकि JSON स्ट्रिंग सीधे UTF-8 कैरेक्टर रख सकती हैं। | é → \u00e9 |
उदाहरण
| मोड | इनपुट | आउटपुट |
|---|---|---|
| एस्केप | C:\Users\me | C:\\Users\\me |
| एस्केप | Say "hello" | Say \"hello\" |
| एस्केप (स्लैश चालू) | 1/2 and 3/4 | 1\/2 and 3\/4 |
| अनएस्केप | caf\u00e9 | café |
| अनएस्केप | \"quoted\" | "quoted" |
| मिनिफ़ाई | { "a": 1, "b": [ 1, 2 ] } | {"a":1,"b":[1,2]} |
कौन-से JSON एस्केप सीक्वेंस उपयोग होते हैं
JSON दो-कैरेक्टर एस्केप सीक्वेंसों का एक छोटा, निश्चित समूह परिभाषित करता है, साथ ही बाक़ी सब चीज़ों
के लिए सामान्य \uXXXX रूप। एस्केप मोड ठीक इन्हीं का उपयोग करता है, और अनएस्केप मोड इन
सभी को समझता है:
| कैरेक्टर | इस रूप में एस्केप |
|---|---|
डबल कोट " | \" |
बैकस्लैश \ | \\ |
| न्यूलाइन | \n |
| कैरिज रिटर्न | \r |
| टैब | \t |
| बैकस्पेस | \b |
| फ़ॉर्म फ़ीड | \f |
फ़ॉरवर्ड स्लैश / (वैकल्पिक) | \/ |
| अन्य कंट्रोल / (वैकल्पिक) ग़ैर-ASCII | \uXXXX |
JSON के लिए स्ट्रिंग एस्केप करना क्यों ज़रूरी है
JSON स्ट्रिंग डबल कोट्स से सीमांकित होती है, इसलिए टेक्स्ट के अंदर एक रॉ डबल कोट स्ट्रिंग को समय से
पहले समाप्त कर देगा और दस्तावेज़ को दूषित कर देगा। बैकस्लैश एस्केप सीक्वेंस शुरू करने के लिए आरक्षित
है, इसलिए उसे भी दोगुना करना पड़ता है। और चूँकि JSON व्याकरण रॉ कंट्रोल कैरेक्टरों को मना करता है, जिस
मान में असली लाइन ब्रेक या टैब हो — कोई Windows फ़ाइल पथ, फ़ॉर्मैट की गई लॉग पंक्ति, सोर्स कोड का
टुकड़ा — उन कैरेक्टरों को संग्रहीत करने से पहले \n, \t आदि में बदलना पड़ता
है। इस चरण को छोड़ना “unexpected token” पार्स त्रुटियों के सबसे आम कारणों में से एक है, ख़ासकर जब
टेक्स्ट को किसी उचित सीरियलाइज़र के बजाय हाथ से या स्ट्रिंग कॉन्कैटनेशन से किसी JSON टेम्पलेट में
चिपकाया जाता है।
एस्केप, मिनिफ़ाई और वैलिडेट अलग-अलग काम हैं
इन्हें एक-दूसरे से मिलाना आसान है क्योंकि इन सभी में JSON शामिल है, पर ये अलग-अलग स्तरों पर काम करते हैं। एस्केपिंग एक अकेले मान को इस तरह बदलती है कि वह कोट्स के अंदर सुरक्षित रहे। मिनिफ़ाइंग एक पूर्ण, पहले से मान्य JSON दस्तावेज़ लेती है और परिवहन के लिए उसे छोटा करने हेतु खाली जगह हटाती है — यह डेटा कभी नहीं बदलती, केवल उसका स्वरूप। वैलिडेटिंग बस यह बताती है कि दस्तावेज़ पार्स होता है या नहीं। यह टूल इन्हें जानबूझकर अलग मोड के रूप में रखता है: जब आप किसी टेक्स्ट को JSON स्ट्रिंग में या उससे बाहर ले जा रहे हों तब एस्केप/अनएस्केप का उपयोग करें, और जब आपके पास पहले से कोई JSON संरचना हो और आप उसे संक्षिप्त या जाँचना चाहें तब मिनिफ़ाई/वैलिडेट का। यदि आप इसके बजाय JSON को इंडेंटेशन के साथ प्रिटी-प्रिंट करना चाहते हैं, तो JSON फ़ॉर्मैटर उसके लिए सही टूल है।
डबल-एस्केप किया गया डेटा पढ़ना
जब डेटा कई सिस्टमों से गुज़रता है तो उसमें एक से अधिक परतें एस्केपिंग की जुड़ सकती हैं — एक JSON
स्ट्रिंग जिसकी सामग्री ख़ुद एक एस्केप की गई JSON स्ट्रिंग हो, ताकि एक अकेला कोट \\\" के
रूप में और न्यूलाइन \\n के रूप में दिखे। अनएस्केप एक बार चलाने से एक परत हटती है; अगली
परत हटाने के लिए परिणाम पर इसे फिर चलाएँ। चूँकि अनएस्केपर मिलने पर चारों ओर के कोट्स की एक जोड़ी भी
हटा देता है, आप किसी लॉग या डिबगर से सीधे एक पूर्ण स्ट्रिंग लिटरल पेस्ट कर सकते हैं और पहले कोट्स को
हाथ से संपादित किए बिना पठनीय टेक्स्ट वापस पा सकते हैं।
अक्सर पूछे जाने वाले सवाल
- “JSON स्ट्रिंग को एस्केप करना” का क्या मतलब है?
- किसी JSON स्ट्रिंग के अंदर कुछ कैरेक्टरों का विशेष अर्थ होता है और वे सीधे नहीं आ सकते: डबल कोट स्ट्रिंग को समाप्त कर देता है, और बैकस्लैश एक एस्केप सीक्वेंस शुरू करता है। न्यूलाइन या टैब जैसे कंट्रोल कैरेक्टर भी रॉ रूप में मान्य नहीं हैं। एस्केपिंग इनमें से हर एक को एक सुरक्षित दो-कैरेक्टर सीक्वेंस से बदल देती है — न्यूलाइन \n बन जाती है, टैब \t, कोट \" और बैकस्लैश \\ — ताकि पूरा टेक्स्ट किसी JSON स्ट्रिंग के अंदर बिना दस्तावेज़ को तोड़े रखा जा सके। यह टूल ठीक यही परिवर्तन करता है, और इसे उलट भी सकता है।
- मुझे JSON को एस्केप या अनएस्केप करने की ज़रूरत कब पड़ती है?
- सबसे आम मामला एक डेटा को दूसरे के अंदर रखना है: किसी कोड स्निपेट, फ़ाइल पथ (बैकस्लैश से भरा), HTML टुकड़े या बहु-पंक्ति संदेश को किसी API, कॉन्फ़िग फ़ाइल या लॉग एंट्री के JSON पेलोड में डालना। आप इसे अंदर डालते समय एस्केप करते हैं और बाहर निकालते समय अनएस्केप करते हैं। अनएस्केप करना उस मान को पढ़ने के लिए भी सुविधाजनक है जो “डबल-एस्केप” हो गया हो — उदाहरण के लिए एक JSON स्ट्रिंग जिसमें ख़ुद एन्कोड किया हुआ JSON हो, जो कई सिस्टमों से गुज़रते डेटा में आसानी से बन जाता है।
- एस्केप करने और मिनिफ़ाई करने में क्या अंतर है?
- एस्केपिंग एक अकेले स्ट्रिंग मान पर काम करती है — यह किसी भी टेक्स्ट को JSON कोट्स की जोड़ी के अंदर सुरक्षित बना देती है। मिनिफ़ाइंग पूरे JSON दस्तावेज़ पर काम करती है — यह संरचना को पार्स करती है और परिवहन के लिए इसे यथासंभव छोटा बनाने के लिए बिना किसी ग़ैर-ज़रूरी खाली जगह के फिर से छापती है। ये अलग-अलग काम हैं: जब आपके पास रॉ टेक्स्ट हो जिसे JSON में डालना हो तब एस्केप का उपयोग करें, और जब आपके पास पहले से मान्य JSON हो और आप बस उसे संपीड़ित करना चाहें तब मिनिफ़ाई का। मिनिफ़ाई मोड वैलिडेट भी करता है, JSON के ख़राब होने पर सटीक पार्सर त्रुटि बताते हुए।
- क्या मुझे “फ़ॉरवर्ड स्लैश एस्केप करें” या “ग़ैर-ASCII एस्केप करें” चालू करना चाहिए?
- आमतौर पर नहीं। JSON विनिर्देश फ़ॉरवर्ड स्लैश को एस्केप करने की माँग नहीं करता, और JSON स्ट्रिंग सीधे उच्चारण-चिह्न और इमोजी जैसे UTF-8 कैरेक्टर रख सकती हैं, इसलिए डिफ़ॉल्ट आउटपुट मान्य और पठनीय होता है। “फ़ॉरवर्ड स्लैश एस्केप करें” केवल तब चालू करें जब आप JSON को किसी HTML स्क्रिप्ट एलिमेंट के अंदर एम्बेड कर रहे हों और डेटा को उस एलिमेंट को ग़लती से समय से पहले समाप्त करने से रोकना चाहते हों। “ग़ैर-ASCII एस्केप करें” केवल तब चालू करें जब कोई डाउनस्ट्रीम सिस्टम सादा 7-बिट ASCII माँगे — आउटपुट किसी भी तरह मान्य JSON रहता है, बस लंबा हो जाता है।
- क्या अनएस्केप इमोजी और बुनियादी सीमा से बाहर के अन्य कैरेक्टर संभालता है?
- हाँ। बुनियादी बहुभाषी तल (basic multilingual plane) से परे के कैरेक्टर — जैसे अधिकांश इमोजी — JSON में दो \uXXXX एस्केप के सरोगेट जोड़े के रूप में दर्शाए जाते हैं। अनएस्केपर हर आधे को हल करता है और दोनों कोड यूनिट वापस एकल मूल कैरेक्टर में मिल जाती हैं, इसलिए “\ud83d\ude00” साफ़-साफ़ 😀 में वापस बदल जाता है। ग़ैर-ASCII विकल्प चालू रखकर एस्केप करने पर वही सरोगेट-जोड़ा रूप बनता है।
- क्या मेरा डेटा कहीं भेजा जाता है?
- नहीं। हर संचालन आपके ब्राउज़र में सादे JavaScript से चलता है — जो टेक्स्ट आप पेस्ट करते हैं वह कभी आपके डिवाइस से बाहर नहीं जाता और कुछ भी संग्रहीत नहीं होता। इससे यह टूल टोकन, आंतरिक पेलोड, निजी कॉन्फ़िगरेशन और किसी भी अन्य संवेदनशील डेटा के लिए सुरक्षित हो जाता है, और पेज लोड होने के बाद यह ऑफ़लाइन काम करता है।