JSON को ऑनलाइन कैसे फॉर्मेट और वैलिडेट करें
मिनिफ़ाइड JSON पढ़ना मुश्किल होता है। API रिस्पॉन्स या कॉन्फ़िग फ़ाइल से आया सिंगल-लाइन ब्लॉब पहले फ़ॉर्मेट किए बिना डीबग करना नामुमकिन है। यहाँ बताया गया है कि JSON तुरंत कैसे फ़ॉर्मेट करें, वैलिडेट करें, और पार्सर को क्रैश करने वाली आम गलतियाँ कैसे ठीक करें।
JSON फ़ॉर्मेटिंग क्या करती है
फ़ॉर्मेटिंग (जिसे प्रिटी-प्रिंटिंग भी कहते हैं) इसे:
{"name":"John Doe","age":30,"address":{"city":"New York","zip":"10001"},"tags":["developer","writer"]}
इसमें बदल देती है:
{
"name": "John Doe",
"age": 30,
"address": {
"city": "New York",
"zip": "10001"
},
"tags": [
"developer",
"writer"
]
}
डेटा वही है, सिर्फ़ व्हाइटस्पेस अलग है — दोनों फ़ॉर्म में JSON वैलिड है।
ब्राउज़र में फ़ॉर्मेट करना
मिनिफ़ाइड JSON को फ़ॉर्मेटर में पेस्ट करें, फ़ॉर्मेट पर क्लिक करें, और इंडेंटेड आउटपुट पाएं। ज़्यादातर फ़ॉर्मेटर टाइप करते समय वैलिडेट भी करते हैं, जो सिंटैक्स एरर वाली एक्जैक्ट लाइन हाइलाइट करते हैं। एक-बार की डीबगिंग के लिए यह सबसे तेज़ तरीका है।
JavaScript में फ़ॉर्मेटिंग
const minified = '{"name":"John Doe","age":30}';
const formatted = JSON.stringify(JSON.parse(minified), null, 2);
console.log(formatted);
JSON.stringify(value, replacer, space) — तीसरा आर्गुमेंट इंडेंट है। 2 से 2-स्पेस इंडेंटेशन मिलती है; '\t' से टैब मिलता है।
Node.js में JSON फ़ाइल फ़ॉर्मेट करें:
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('data.json', 'utf8'));
fs.writeFileSync('data.json', JSON.stringify(data, null, 2));
Python में फ़ॉर्मेटिंग
import json
minified = '{"name": "John Doe", "age": 30}'
formatted = json.dumps(json.loads(minified), indent=2)
print(formatted)
फ़ाइल को जगह पर फ़ॉर्मेट करें:
import json
with open('data.json', 'r') as f:
data = json.load(f)
with open('data.json', 'w') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
ensure_ascii=False Unicode कैरेक्टर (é, ñ, नमस्ते) को \uXXXX में एस्केप करने की बजाय सुरक्षित रखता है।
कमांड लाइन: jq
jq एक कमांड-लाइन JSON प्रोसेसर है। फ़ाइल फ़ॉर्मेट करें:
# इंस्टॉल करें
brew install jq # macOS
sudo apt install jq # Ubuntu
# प्रिटी-प्रिंट करें
jq . data.json
# मिनिफ़ाई करें
jq -c . data.json
# पाइप्ड API रिस्पॉन्स फ़ॉर्मेट करें
curl -s https://api.example.com/data | jq .
Python वन-लाइनर (कोई इंस्टॉलेशन नहीं चाहिए):
python3 -m json.tool data.json
आम JSON एरर और उन्हें कैसे ठीक करें
ट्रेलिंग कॉमा:
{
"name": "John",
"age": 30, ← एरर
}
JSON में ट्रेलिंग कॉमा नहीं होता। } या ] से पहले आखिरी कॉमा हटाएं।
डबल कोट की जगह सिंगल कोट:
{'name': 'John'} ← एरर
JSON में सभी स्ट्रिंग और key के लिए डबल कोट ज़रूरी है। ' को " से बदलें।
बिना कोट की key:
{name: "John"} ← एरर
JavaScript ऑब्जेक्ट लिटरल सिंटैक्स वैलिड JSON नहीं है। key कोट में होनी चाहिए: {"name": "John"}।
कमेंट:
{
// यह user ऑब्जेक्ट है
"name": "John"
}
JSON में कमेंट सपोर्ट नहीं होता। उन्हें हटाएं, या अगर आपका टूल सपोर्ट करे तो JSONC (JSON with Comments) फ़ॉर्मेट में स्विच करें।
undefined या NaN वैल्यू:
{"value": undefined} ← एरर
{"value": NaN} ← एरर
undefined, NaN, और Infinity JavaScript वैल्यू हैं, JSON वैल्यू नहीं। null, 0 से बदलें, या फ़ील्ड हटा दें।
स्ट्रिंग में अनएस्केप्ड स्पेशल कैरेक्टर:
{"message": "He said "hello""} ← एरर
स्ट्रिंग के अंदर डबल कोट को एस्केप करना होगा: {"message": "He said \"hello\""}।
स्ट्रिंग में न्यूलाइन को भी एस्केप करना होगा: लिटरल लाइन ब्रेक की बजाय \n।
प्रोग्रामेटिक वैलिडेशन
function isValidJson(str) {
try {
JSON.parse(str);
return true;
} catch {
return false;
}
}
import json
def is_valid_json(s: str) -> bool:
try:
json.loads(s)
return True
except json.JSONDecodeError:
return False
प्रोडक्शन में, JSON.parse (JS) और json.loads (Python) दोनों एरर की पोज़िशन के साथ exception थ्रो करते हैं।
की सॉर्टिंग
अल्फ़ाबेटिकल order में सॉर्ट की से version control में diff comparison बहुत साफ़ होता है:
const sorted = JSON.stringify(data, Object.keys(data).sort(), 2);
json.dumps(data, sort_keys=True, indent=2)
मुख्य बातें
- JavaScript में
JSON.stringify(data, null, 2)और Python मेंjson.dumps(data, indent=2)किसी भी ऑब्जेक्ट को फ़ॉर्मेट करता है। jq .सबसे तेज़ कमांड-लाइन फ़ॉर्मेटर है —curlआउटपुट के साथ बेहतरीन काम करता है।- पाँच सबसे आम JSON एरर: ट्रेलिंग कॉमा, सिंगल कोट, बिना कोट की key, कमेंट, और अनएस्केप्ड कैरेक्टर।
- Unicode रीडेबल रखने के लिए Python में
ensure_ascii=Falseइस्तेमाल करें। - क्लीनर diff के लिए
sort_keys=True/Object.keys().sort()से key सॉर्ट करें।