JSON स्ट्रिंग एस्केपिंग वह प्रक्रिया है जिसमें किसी स्ट्रिंग के भीतर मौजूद विशेष वर्णों को ऐसे एस्केप अनुक्रमों में बदला जाता है जिन्हें JSON पार्सर बिना संरचना तोड़े पढ़ सके। JSON विनिर्देश (ECMA-404 / RFC 8259) के अनुसार स्ट्रिंग मानों के भीतर कुछ निश्चित वर्णों से पहले बैकस्लैश लगाना अनिवार्य है। उचित एस्केपिंग के बिना, स्ट्रिंग में सीधा दोहरा उद्धरण चिह्न या नई लाइन का वर्ण स्ट्रिंग को समय से पहले समाप्त कर देगा और पार्स त्रुटि उत्पन्न करेगा।
प्रत्येक JSON स्ट्रिंग दोहरे उद्धरण चिह्नों से सीमित होती है। जब स्ट्रिंग में स्वयं दोहरा उद्धरण, बैकस्लैश, या कोई नियंत्रण वर्ण (U+0000 से U+001F तक) आए, तो उस वर्ण को उसके एस्केप अनुक्रम से प्रतिस्थापित करना आवश्यक है। उदाहरण के लिए, नई लाइन का वर्ण \n बन जाता है, टैब \t बनता है, और दोहरा उद्धरण \" बनता है। किसी भी Unicode कोड पॉइंट को \uXXXX के रूप में भी लिखा जा सकता है, जहाँ XXXX चार अंकों का hexadecimal value होता है।
अन-एस्केपिंग (विपरीत प्रक्रिया) उन बैकस्लैश अनुक्रमों को मूल वर्णों में वापस परिवर्तित करती है। इसका उपयोग तब करें जब आपको कोई JSON पेलोड प्राप्त हो जिसमें स्ट्रिंग मान दोहरे एस्केप किए गए हों, या जब आपको किसी JSON लॉग प्रविष्टि से कच्चा पाठ निकालकर UI या टर्मिनल में प्रदर्शित करना हो। log aggregation pipelines में यह समस्या अक्सर आती है: जब किसी JSON-एन्कोडेड संदेश को दूसरे JSON दस्तावेज़ के भीतर स्ट्रिंग मान के रूप में संग्रहीत किया जाता है, तो आंतरिक स्ट्रिंग का प्रत्येक बैकस्लैश दोगुना होकर आता है।
JSON Escape टूल का उपयोग क्यों करें?
बैकस्लैश को मैन्युअल रूप से जोड़ना या हटाना थकाऊ और त्रुटिपूर्ण होता है, विशेषकर जब बहु-पंक्ति पाठ, फ़ाइल पथ, या एम्बेड किए गए कोड खंडों से निपटना पड़े। एक समर्पित एस्केप टूल उन विशेष स्थितियों को पकड़ता है जो हाथ से संपादन में छूट जाती हैं।
🔒
गोपनीयता-प्रथम प्रसंस्करण
आपकी स्ट्रिंगें कभी ब्राउज़र से बाहर नहीं जाती। सभी एस्केपिंग और अन-एस्केपिंग स्थानीय रूप से JavaScript में बिना किसी सर्वर कॉल के चलती है, इसलिए API कुंजियाँ या टोकन जैसा संवेदनशील डेटा आपके डिवाइस पर ही रहता है।
⚡
तत्काल रूपांतरण
कोई भी पाठ चिपकाएँ और मिलीसेकंड में सही ढंग से एस्केप किया गया JSON आउटपुट प्राप्त करें। किसी दूरस्थ सर्वर तक जाने-आने की प्रतीक्षा नहीं करनी पड़ती।
🛡️
कोई खाता या इंस्टॉलेशन नहीं
पेज खोलें और एस्केपिंग शुरू करें। कोई पंजीकरण फॉर्म नहीं, कोई ब्राउज़र एक्सटेंशन नहीं, कोई CLI टूल इंस्टॉल नहीं करना। आधुनिक ब्राउज़र वाले किसी भी डिवाइस पर कार्य करता है।
📋
संपूर्ण वर्ण समर्थन
सभी JSON-अनिवार्य एस्केप को संभालता है: दोहरे उद्धरण, बैकस्लैश, नियंत्रण वर्ण (U+0000 से U+001F), और Unicode अनुक्रम जिनमें इमोजी और CJK वर्ण शामिल हैं।
JSON String Escape के उपयोग के मामले
फ्रंटएंड विकास
fetch या XMLHttpRequest के माध्यम से भेजे जाने वाले JSON पेलोड में उपयोगकर्ता-निर्मित सामग्री को एम्बेड करने से पहले एस्केप करें। इससे तब विकृत अनुरोध रुकते हैं जब उपयोगकर्ता उद्धरण, नई लाइनें, या इमोजी टाइप करते हैं।
बैकएंड API कार्य
ऐसी भाषाओं में JSON प्रतिक्रिया बॉडी बनाएँ जो स्ट्रिंगों को स्वतः एस्केप नहीं करतीं (शेल स्क्रिप्ट, SQL संग्रहीत प्रक्रियाएँ, टेम्पलेट इंजन)। कच्ची स्ट्रिंग चिपकाएँ, एस्केप संस्करण कॉपी करें।
DevOps और कॉन्फ़िगरेशन
Terraform, CloudFormation, या Kubernetes ConfigMaps के लिए JSON कॉन्फ़िगरेशन फ़ाइलों में बहु-पंक्ति प्रमाणपत्र PEM ब्लॉक, SSH कुंजियाँ, या शेल स्क्रिप्ट JSON संरचना तोड़े बिना एम्बेड करें।
QA और परीक्षण
ऐसे परीक्षण फ़िक्स्चर बनाएँ जिनमें विशेष स्थिति वाले वर्ण हों: टैब, शून्य बाइट, Unicode सरोगेट जोड़े, और नेस्टेड एस्केप स्ट्रिंगें। सत्यापित करें कि आपका पार्सर इन्हें सही ढंग से संभालता है।
डेटा इंजीनियरिंग
Elasticsearch, CloudWatch, या Datadog से दोहरे-एस्केप लॉग प्रविष्टियाँ साफ़ करें। मूल संदेश पुनः प्राप्त करने के लिए स्ट्रिंग को अन-एस्केप करें, फिर विश्लेषण या पुनः अंतर्ग्रहण के लिए उपयोग करें।
JSON सीखना
देखें कि JSON विनिर्देश के अनुसार कौन से वर्णों को एस्केपिंग की आवश्यकता है। ECMA-404 का अध्ययन कर रहे छात्रों या अपना JSON पार्सर बना रहे डेवलपर्स के लिए उपयोगी।
JSON Escape अनुक्रम संदर्भ
JSON विनिर्देश ठीक दो अनिवार्य एस्केप (दोहरा उद्धरण और बैकस्लैश) और सामान्य नियंत्रण वर्णों के लिए छह संक्षिप्त एस्केप अनुक्रम परिभाषित करता है। अन्य सभी नियंत्रण वर्णों (U+0000 से U+001F) के लिए \uXXXX रूप का उपयोग आवश्यक है। U+FFFF से ऊपर के वर्ण (जैसे इमोजी) को UTF-16 सरोगेट जोड़े के रूप में दर्शाया जा सकता है: \uD83D\uDE00।
वर्ण
विवरण
एस्केप रूप
"
Double quote
\"
\
Backslash
\\
/
Forward slash
\/ (optional)
\n
Newline (LF)
\n
\r
Carriage return
\r
\t
Tab
\t
\b
Backspace
\b
\f
Form feed
\f
U+0000–U+001F
Control characters
\u0000–\u001F
U+0080+
Non-ASCII (e.g. emoji)
\uXXXX or raw UTF-8
JSON एस्केपिंग बनाम JSON एन्कोडिंग
डेवलपर कभी-कभी किसी स्ट्रिंग को एस्केप करने और पूर्ण JSON दस्तावेज़ को एन्कोड करने के बीच भ्रमित हो जाते हैं।
स्ट्रिंग एस्केपिंग
JSON स्ट्रिंग मान के भीतर के पाठ पर कार्य करती है। विशेष वर्णों को बैकस्लैश अनुक्रमों से प्रतिस्थापित करती है ताकि स्ट्रिंग दोहरे उद्धरणों के भीतर वैध रहे। इनपुट: कच्चा पाठ। आउटपुट: एस्केप किया गया पाठ (वैध JSON के लिए अभी भी आसपास उद्धरण चिह्नों की आवश्यकता है)।
JSON एन्कोडिंग (Serialization)
पूरी data structure (object, array, numbers, booleans, null) को JSON text में convert करती है। स्ट्रिंग एस्केपिंग इस बड़ी process का एक हिस्सा है। Input: एक data structure। Output: एक पूरा JSON document।
कोड उदाहरण
प्रत्येक प्रमुख प्रोग्रामिंग भाषा में इसके लिए अंतर्निर्मित फ़ंक्शन हैं। JavaScript, Python, Go, और jq में उदाहरण:
JavaScript (browser / Node.js)
// JSON.stringify escapes a value and wraps it in quotes
JSON.stringify('Line 1\nLine 2') // → '"Line 1\\nLine 2"'
// To get just the inner escaped string (no surrounding quotes):
const escaped = JSON.stringify('She said "hello"').slice(1, -1)
// → 'She said \\"hello\\"'
// Parsing reverses the escaping
JSON.parse('"tabs\\tand\\nnewlines"') // → 'tabs\tand\nnewlines'
// Handling Unicode: emoji in JSON
JSON.stringify('Price: 5\u20ac') // → '"Price: 5\u20ac"' (raw euro sign)
Python
import json
# json.dumps escapes and quotes a string
json.dumps('Line 1\nLine 2') # → '"Line 1\\nLine 2"'
# Ensure ASCII: replace non-ASCII with \uXXXX sequences
json.dumps('Caf\u00e9', ensure_ascii=True) # → '"Caf\\u00e9"'
# Keep UTF-8 characters as-is (default in Python 3)
json.dumps('Caf\u00e9', ensure_ascii=False) # → '"Caf\u00e9"'
# Unescape by round-tripping through json.loads
json.loads('"She said \\"hello\\""') # → 'She said "hello"'
Go
package main
import (
"encoding/json"
"fmt"
)
func main() {
// json.Marshal escapes a Go string for JSON
raw := "Line 1\nLine 2\tindented"
b, _ := json.Marshal(raw)
fmt.Println(string(b))
// → "Line 1\nLine 2\tindented"
// Unescape with json.Unmarshal
var out string
json.Unmarshal([]byte(`"She said \"hello\""`), &out)
fmt.Println(out)
// → She said "hello"
}
CLI (jq)
# Escape a raw string into a JSON-safe value
echo 'Line 1
Line 2 with tab' | jq -Rs '.'
# → "Line 1\nLine 2\twith tab\n"
# Unescape a JSON string back to raw text
echo '"She said \"hello\""' | jq -r '.'
# → She said "hello"
अक्सर पूछे जाने वाले प्रश्न
JSON स्ट्रिंग में कौन से वर्णों को एस्केप करना अनिवार्य है?
JSON विनिर्देश (RFC 8259) के अनुसार दोहरे उद्धरण (\"), बैकस्लैश (\\), और U+0000 से U+001F तक के सभी नियंत्रण वर्णों को एस्केप करना आवश्यक है। फॉरवर्ड स्लैश (/) को \/ के रूप में एस्केप किया जा सकता है, लेकिन यह वैकल्पिक है। अन्य सभी Unicode वर्ण, जिनमें गैर-ASCII पाठ और इमोजी शामिल हैं, बिना एस्केपिंग के प्रकट हो सकते हैं, बशर्ते दस्तावेज़ UTF-8 एन्कोडिंग का उपयोग करे।
JSON escape और JSON stringify में क्या अंतर है?
JavaScript में JSON.stringify() एक पूरे JavaScript value को JSON string में serialize करता है, double quotes लगाता है और अंदर के special characters को escape करता है। JSON escaping specifically character-level replacement को refer करती है — special characters को backslash sequences से replace करना। किसी string पर JSON.stringify() call करने से serialization के part के रूप में escaping होती है।
JSON में नई लाइन को कैसे एस्केप करें?
नई लाइन के वर्ण (U+000A) को दो-वर्ण अनुक्रम \n से प्रतिस्थापित करें। इसी तरह, कैरिज रिटर्न (U+000D) \r बन जाता है। यदि आप JSON.stringify() या Python में json.dumps() का उपयोग करते हैं, तो ये प्रतिस्थापन स्वतः हो जाते हैं।
मेरी JSON स्ट्रिंग दोहरी एस्केप क्यों है?
Double escaping तब होती है जब किसी string को दो बार serialize किया जाता है। उदाहरण के लिए, ऐसी string पर JSON.stringify() call करना जिसमें पहले से escape sequences हों, backslash को फिर से escape कर देगा: \n, \\n बन जाता है। इसे fix करने के लिए, दोबारा serialize करने से पहले JSON.parse() से एक बार parse करें, या अपनी pipeline में unnecessary encoding steps देखें।
क्या JSON स्ट्रिंग में एकल उद्धरण चिह्न का उपयोग कर सकते हैं?
नहीं। JSON विनिर्देश सभी स्ट्रिंग मानों और गुण नामों के लिए दोहरे उद्धरण चिह्न अनिवार्य करता है। एकल उद्धरण वैध JSON नहीं हैं और पार्स त्रुटि उत्पन्न करेंगे। यदि आपके स्रोत डेटा में एकल उद्धरण हैं, तो JSON दोहरे-उद्धरण स्ट्रिंग के भीतर उन्हें एस्केप करने की आवश्यकता नहीं है, क्योंकि उस संदर्भ में एकल उद्धरण सामान्य वर्ण हैं।
क्या JSON में बिना एस्केप किए UTF-8 वर्ण डालना सुरक्षित है?
हाँ, जब तक JSON दस्तावेज़ UTF-8 में एन्कोडेड हो, जिसे RFC 8259 डिफ़ॉल्ट और अनुशंसित एन्कोडिंग के रूप में निर्दिष्ट करता है। उच्चारण चिह्न वाले अक्षर, CJK वर्ण, और इमोजी \uXXXX एस्केपिंग के बिना सीधे स्ट्रिंग में आ सकते हैं। कुछ पुराने systems सिर्फ ASCII JSON expect करते हैं; उस case में Python में ensure_ascii option या अपनी language का equivalent flag use करें।
JSON में इमोजी को कैसे एस्केप करें?
U+FFFF से ऊपर के इमोजी को JSON में UTF-16 सरोगेट जोड़े का उपयोग करके दर्शाया जाता है। उदाहरण के लिए, मुस्कुराता हुआ चेहरा (U+1F600) \uD83D\uDE00 बन जाता है। अधिकांश क्रमबद्धक इसे स्वतः संभालते हैं। यदि आप JSON manually लिख रहे हैं या आपका tool केवल Basic Multilingual Plane support करता है, तो surrogate pair notation use करें। अन्यथा, इमोजी को सीधे UTF-8 वर्ण के रूप में शामिल करें।