निःशुल्क JSON फॉर्मेटर और वैलिडेटर
अपना JSON पेस्ट करें और उसे तुरंत फ़ॉर्मेट, मिनिफ़ाई या मान्य करें। सभी प्रसंस्करण आपके ब्राउज़र में होता है।
JSON क्या है और इसने वेब पर कब्ज़ा क्यों कर लिया
JSON (JavaScript Object Notation) एक टेक्स्ट-आधारित डेटा इंटरचेंज प्रारूप है जो JavaScript ऑब्जेक्ट लिटरल सिंटैक्स से व्युत्पन्न है। यह छह डेटा प्रकारों का समर्थन करता है (ऑब्जेक्ट, ऐरे, स्ट्रिंग, संख्याएँ, बूलियन, और null) और कुछ नहीं। Douglas Crockford ने 2001 में इस प्रारूप को XML के एक जानबूझकर न्यूनतम विकल्प के रूप में निर्दिष्ट किया, json.org पर डिज़ाइन प्रकाशित करते हुए स्पष्ट लक्ष्य के साथ कि "XML का फैट-फ़्री विकल्प" बनाया जाए। IETF ने JSON को जुलाई 2006 में RFC 4627 के रूप में मानकीकृत किया, मार्च 2014 में RFC 7159 के रूप में परिष्कृत किया, और फिर दिसंबर 2017 में RFC 8259 के रूप में (वर्तमान STD 90, सक्रिय मानक, ECMA-404 के रूप में समानांतर रूप से प्रकाशित भी)। वेब के डेटा प्लेन पर JSON का अधिग्रहण लगभग 2008 और 2014 के बीच हुआ: जैसे-जैसे सिंगल-पेज ऐप्स और मोबाइल क्लाइंट्स बढ़े, पहले के APIs द्वारा उपयोग किए गए विस्तृत XML पेलोड JSON द्वारा प्रतिस्थापित कर दिए गए। 2026 तक प्रत्येक सार्वजनिक REST API वस्तुतः JSON में स्वयं को दस्तावेज़ करती है; XML दस्तावेज़ प्रारूपों और एंटरप्राइज़ इंटीग्रेशन में जीवित है, लेकिन JSON API अर्थव्यवस्था का स्वामी है। यह उपकरण JSON पढ़ता है, इसे spec के विरुद्ध मान्य करता है, और इसे फ़ॉर्मेटेड (इंडेंटेड, लाइन-ब्रेक के साथ) या मिनिफ़ाइड (वाइटस्पेस हटाया गया) के रूप में फिर से उत्सर्जित करता है।
"Format JSON" वास्तव में क्या करता है
JSON spec स्तर पर वाइटस्पेस-असंवेदनशील है, एक पार्सर {"name":"Alice","age":30} को मल्टी-लाइन इंडेंटेड फ़ॉर्म के समान ही पढ़ता है। दृश्य अंतर पूरी तरह से मानव पाठकों के लिए है। फ़ॉर्मेटिंग (जिसे "प्रेटी-प्रिंटिंग" या "बूटीफ़ायिंग" भी कहा जाता है) नेस्टेड स्तरों के बीच इंडेंटेशन डालती है, हर प्रॉपर्टी को अपनी लाइन पर रखती है, और कुंजी और मान के बीच कोलन के बाद रिक्त स्थान जोड़ती है। मिनिफ़ाइंग इसके विपरीत करती है: स्ट्रिंग लिटरल्स के अंदर के अलावा हर वाइटस्पेस बाइट को हटा देती है। प्रोडक्शन HTTP प्रतिक्रियाएँ बैंडविड्थ बचाने के लिए आमतौर पर मिनिफ़ाइ की जाती हैं (CDN किनारे पर gzip और Brotli बाक़ी संभालते हैं); विकास के दौरान फ़ॉर्मेटेड संस्करण ही पढ़ा जाता है। मानक फ़ॉर्मेटिंग परंपराएँ: 2 स्पेस प्रति इंडेंट स्तर (आधुनिक वेब डिफ़ॉल्ट, Prettier का डिफ़ॉल्ट, JavaScript इकोसिस्टम मानदंड), 4 स्पेस उन कोडबेस के लिए जो Python-प्रभावित परंपराओं का पालन करते हैं, या 1 टैब उन प्रोजेक्ट्स के लिए जो टैब इंडेंटेशन पसंद करते हैं। JavaScript में JSON.stringify() एक पूर्णांक या स्ट्रिंग दूसरा तर्क लेता है जो ठीक यही नियंत्रित करता है, JSON.stringify(data, null, 2) 2-स्पेस इंडेंटेड आउटपुट उत्पन्न करता है। यह उपकरण समान तीन विकल्पों को उजागर करता है।
JSON सख़्त है, वे नियम जो लोगों को ठोकर मारते हैं
JSON का व्याकरण कुख्यात रूप से अनुग्रहहीन है। ऑब्जेक्ट कुंजियों को दोहरे उद्धरणों से उद्धृत किया जाना चाहिए (एकल उद्धरण कानूनी नहीं हैं)। स्ट्रिंग मानों को दोहरे उद्धरणों का उपयोग करना चाहिए। कोई पीछे लगने वाला अल्पविराम नहीं ऑब्जेक्ट की अंतिम प्रॉपर्टी या ऐरे के अंतिम तत्व के बाद, JavaScript डेवलपर्स के लिए आश्चर्य का बार-बार स्रोत क्योंकि JS स्वयं पीछे लगने वाले अल्पविराम स्वीकार करता है। कोई टिप्पणी नहीं: YAML या JavaScript के विपरीत, JSON में टिप्पणी सिंटैक्स नहीं है। कोई undefined मान नहीं: JSON में केवल null है; JavaScript के undefined को JSON-एनकोड करने का प्रयास प्रॉपर्टी को पूरी तरह से छोड़ देता है। संख्याएँ JSON-दशमलव रूप में होनी चाहिए: कोई अग्रणी शून्य नहीं (007 अवैध), कोई हेक्स नहीं (0x7F अवैध), कोई Infinity या NaN नहीं। स्ट्रिंग्स वैध UTF-8 होनी चाहिए: अधिकांश पार्सर UTF-16 सरोगेट-पेयर समस्याओं को सहन करते हैं लेकिन spec अच्छी तरह से बने Unicode की मांग करता है। डुप्लिकेट कुंजियाँ तकनीकी रूप से वैध हैं spec के अनुसार लेकिन अधिकांश पार्सरों में अपरिभाषित व्यवहार उत्पन्न करती हैं (अंतिम मान आमतौर पर जीतता है)। कई JSON वेरिएंट्स इन नियमों को शिथिल करते हैं: JSON5 (Aseem Kishore, 2012) पीछे लगने वाले अल्पविराम, एकल उद्धरण, टिप्पणियाँ, और अन्य एर्गोनॉमिक शिथिलताओं की अनुमति देता है; JSONC (VS Code के tsconfig.json और समान द्वारा उपयोग किया गया) C-शैली लाइन टिप्पणियों के साथ JSON है; HJSON उद्धृत कुंजियों को वैकल्पिक के साथ मानवीय-मित्रता का लक्ष्य रखता है। कोई भी JSON उचित नहीं है, उन्हें अपने स्वयं के पार्सर की आवश्यकता है, और अधिकांश प्रोडक्शन टूलिंग RFC 8259 के अनुसार सख़्त JSON की अपेक्षा करता है।
जहाँ फ़ॉर्मेटेड JSON अपनी कमाई करता है
- API प्रतिक्रियाएँ पढ़ना। एक REST एंडपॉइंट प्रोडक्शन में मिनिफ़ाइड JSON लौटाता है। डिबगिंग के दौरान इसका निरीक्षण करने के लिए, इसे यहाँ पेस्ट करें, उचित इंडेंटेशन और कुंजी रंग के साथ संरचना देखें, बग खोजें।
- संरचित लॉग पंक्तियाँ पढ़ना। आधुनिक लॉगिंग स्टैक (Datadog, Splunk, Elasticsearch, CloudWatch) प्रति लॉग पंक्ति एक JSON ऑब्जेक्ट उत्सर्जित करते हैं, सब एक पंक्ति पर। एक जटिल लॉग प्रविष्टि को जल्दी से पढ़ने के लिए, इसे यहाँ फ़ॉर्मेट करें।
- कॉन्फ़िगरेशन फ़ाइलों की समीक्षा।
package.json,tsconfig.json,composer.json, AWS IAM नीतियाँ, Kubernetes JSON मेनिफ़ेस्ट, सभी सुसंगत रूप से फ़ॉर्मेटेड होने पर समीक्षा करना आसान हैं। "Sort Keys" विकल्प कैनोनिकल वर्णानुक्रमिक क्रम उत्पन्न करता है जो दो कॉन्फ़िग्स को डिफ़ करने के लिए उपयोगी है। - दो JSON दस्तावेज़ों की तुलना। दोनों को सुसंगत इंडेंटेशन और कुंजी क्रम के साथ फ़ॉर्मेट करें, फिर अपने पसंदीदा डिफ़ टूल में परिणामों को डिफ़ करें। सामान्यीकरण के बिना, सिमेंटिक रूप से समान JSON जो केवल वाइटस्पेस या कुंजी क्रम में भिन्न होते हैं शोर डिफ़्स उत्पन्न करते हैं।
- हाथ से संपादित JSON फ़ाइल की पुष्टि करना। पेस्ट करें, Validate पर क्लिक करें, यदि कोई सिंटैक्स त्रुटि है, तो स्थिति और संदेश आपको बिल्कुल बताते हैं कि कहाँ देखना है। फ़ाइल को एक बिल्ड के माध्यम से चलाने से तेज़ जो "unexpected token at line 47" के साथ विफल होता है।
- गहरी-नेस्टेड मान का पथ खोजना। Tree दृश्य खोलें, उस मान पर क्लिक करें जिसकी आपको परवाह है, उसकी JSONPath अभिव्यक्ति देखें,
jqक्वेरी, परीक्षणों में JSONPath अभिकथन, या कोड में फ़ील्ड तक पहुँचने के लिए उपयोगी। - परिनियोजन-पूर्व मिनिफ़िकेशन। एक JSON कॉन्फ़िग जो ब्राउज़र बंडल में जहाज होती है, एक एम्बेडेड JSON-इन-JS स्ट्रिंग, या कोई भी संदर्भ जहाँ बाइट्स मायने रखते हैं, मिनिफ़ाई सभी फ़ॉर्मेटिंग वाइटस्पेस को हटा देती है।
व्यापक टूलिंग इकोसिस्टम में JSON
कमांड-लाइन वर्कफ़्लो के लिए, jq (Stephen Dolan, पहली बार 2012 में जारी) कैनोनिकल JSON प्रोसेसर है, एक छोटी, स्थिर रूप से लिंक की गई बाइनरी जो फ़ॉर्मेटिंग (jq .), फ़िल्टरिंग (jq '.users[] | .email'), परिवर्तन, और अपनी संक्षिप्त अभिव्यक्ति भाषा के साथ जटिल क्वेरीज़ संभालती है। Python की मानक लाइब्रेरी एक-शॉट प्रेटी-प्रिंटिंग के लिए python -m json.tool शामिल करती है। JavaScript का अंतर्निहित JSON.stringify(obj, null, 2) सबसे तेज़ इन-ब्राउज़र/इन-Node फ़ॉर्मेटर है। JSON Schema (वर्तमान draft 2020-12, Henry Andrews, Austin Wright, Greg Dennis और अन्य द्वारा संपादित) एक शब्दावली प्रदान करती है यह घोषित करने के लिए कि एक JSON दस्तावेज़ का आकार क्या होना चाहिए (टाइप बाधाएँ, आवश्यक प्रॉपर्टीज़, फ़ॉर्मेट सत्यापनकर्ता, सशर्त तर्क) और API अनुबंध सत्यापन, OpenAPI 3.x विनिर्देशों, कॉन्फ़िगरेशन सत्यापन, और JSON-आधारित फ़ॉर्म जनरेशन के लिए मानक है। JSONPath (Stefan Goessner, 2007, अब फ़रवरी 2024 में RFC 9535 के रूप में मानकीकृत) JSON के लिए XPath-जैसी क्वेरी भाषा है, jq के सरल उपसमुच्चय और Postman, jsonpath-ng (Python), और AWS CLI जैसे टूल्स द्वारा उपयोग की जाती है। JSON-LD (W3C अनुशंसा, वर्तमान संस्करण 1.1 जुलाई 2020 में प्रकाशित) JSON को सेमेंटिक-वेब लिंक्ड-डेटा परंपराओं के साथ बढ़ाता है और वह प्रारूप है जो Google वेब पेजों पर संरचित-डेटा मार्कअप के लिए अनुशंसा करता है। JSON Patch (RFC 6902) और JSON Merge Patch (RFC 7396) JSON दस्तावेज़ों के लिए मानकीकृत डिफ़/पैच प्रारूप परिभाषित करते हैं।
Tree दृश्य, यह क्यों मायने रखता है
मध्यम आकार (कुछ सौ पंक्तियाँ) के एक प्रेटी-प्रिंट JSON दस्तावेज़ को भी समतल पाठ के रूप में नेविगेट करना कठिन है। इस उपकरण में tree दृश्य प्रत्येक ऑब्जेक्ट और ऐरे को एक विस्तार योग्य नोड में संक्षिप्त करता है, आपको केवल उन स्तरों को देखने के लिए क्लिक करने देता है जिनकी आपको परवाह है, और किसी भी नोड के लिए JSONPath अभिव्यक्ति दिखाता है जिस पर आप क्लिक करते हैं। पथ-ऑन-क्लिक सुविधा "मैं दस्तावेज़ में अपना वांछित मान देख सकता हूँ" और "मैं ऐसा कोड लिख सकता हूँ जो उस मान तक पहुँचे" के बीच व्यावहारिक पुल है, पथ को jq में पेस्ट करें, JSONPath क्वेरी में, JavaScript ब्रैकेट नोटेशन में, Postman परीक्षण अभिकथन में। गहरी नेस्टेड API प्रतिक्रियाओं (Stripe, Shopify, Salesforce, समृद्ध डोमेन मॉडल वाली कोई भी चीज़) के लिए, tree दृश्य + पथ-कॉपी वह वर्कफ़्लो है जो दो क्लिक में "मैं फ़ील्ड देखता हूँ" से "मेरे पास पहुँच अभिव्यक्ति है" तक ले जाता है।
गोपनीयता: केवल ब्राउज़र-में सत्यापन
एक फ़ॉर्मेटर में पेस्ट किया गया JSON अक्सर वास्तविक प्रोडक्शन डेटा होता है, उपयोगकर्ता पहचानकर्ताओं, सत्र टोकन, आंतरिक एंटिटी ID, कॉन्फ़िगरेशन मान वाली API प्रतिक्रियाएँ जिनमें एंडपॉइंट URL और फ़ीचर फ़्लैग शामिल होते हैं। सर्वर-साइड JSON फ़ॉर्मेटर हर इनपुट की एक प्रति अपने लॉग्स में लेते हैं। यह उपकरण आपके JSON को ब्राउज़र के अंतर्निहित JSON.parse() के साथ पार्स करता है, परिणामी संरचना को JavaScript में चलता है, और इसे एक स्ट्रिंग के रूप में फिर से उत्सर्जित करता है, सब आपके ब्राउज़र टैब के अंदर। DevTools के नेटवर्क टैब में सत्यापित करें जब आप Format पर क्लिक करते हैं (कोई अनुरोध फ़ायर नहीं होता), या लोड होने के बाद पृष्ठ को ऑफ़लाइन (हवाई जहाज मोड) करें और फ़ॉर्मेटर अभी भी काम करता है। प्रोडक्शन API प्रतिक्रियाओं, आंतरिक कॉन्फ़िग, टोकन या कुंजियाँ वाले JSON, या किसी भी दस्तावेज़ के लिए सुरक्षित जिसे आप किसी अजनबी की हार्ड ड्राइव पर कॉपी होते नहीं देखना चाहेंगे।
अक्सर पूछे जाने वाले प्रश्न
मेरा JSON सत्यापन में क्यों विफल हो जाता है?
सबसे आम त्रुटियाँ: पीछे लगने वाले अल्पविराम अंतिम प्रॉपर्टी/तत्व के बाद (JavaScript और JSON5 में कानूनी, मानक JSON में अवैध); एकल उद्धरण दोहरे के बजाय (JSON को केवल " चाहिए); अनकोटेड कुंजियाँ (JavaScript ऑब्जेक्ट लिटरल्स {name: "Alice"} की अनुमति देते हैं लेकिन JSON को {"name": "Alice"} चाहिए); टिप्पणियाँ (JSON में टिप्पणी सिंटैक्स नहीं है, यदि आपको चाहिए तो JSON5 या JSONC का उपयोग करें); undefined मान (JSON में केवल null है); लापता ब्रैकेट/ब्रेसेस; विशेष फ़्लोट्स जैसे NaN या Infinity (JSON में अवैध)। मान्यकर्ता का त्रुटि संदेश पंक्ति और स्तंभ देता है; पहले वहाँ देखें।
फ़ॉर्मेट और मिनिफ़ाई में क्या अंतर है?
Format JSON को पठनीय बनाने के लिए इंडेंटेशन, लाइन ब्रेक्स और स्पेसिंग जोड़ता है; minify इसे जितना संभव हो उतना छोटा बनाने के लिए सभी अनावश्यक वाइटस्पेस को हटाता है। वास्तविक डेटा सामग्री समान है, JSON पार्सर सिंटैक्स स्तर पर वाइटस्पेस को अनदेखा करते हैं। विकास, डिबगिंग और कोड समीक्षा के लिए फ़ॉर्मेटेड का उपयोग करें; HTTP ट्रांसमिशन, JavaScript बंडलों में एम्बेडेड JSON, या किसी भी संदर्भ के लिए मिनिफ़ाइड का उपयोग करें जहाँ बाइट्स मायने रखते हैं। आधुनिक इंफ्रास्ट्रक्चर (HTTP प्रतिक्रियाओं पर gzip, CDN किनारे पर Brotli) JSON को आक्रामक रूप से संपीड़ित करता है इसलिए बैंडविड्थ अंतर दिखने से छोटा है, लेकिन मिनिफ़ाइड अभी भी थोड़ा छोटा और पार्स करने में तेज़ है।
क्या कोई आकार सीमा है?
कोई कठोर सीमा नहीं, लेकिन व्यावहारिक सीमाएँ ब्राउज़र मेमोरी पर निर्भर करती हैं। ~10 MB तक की फ़ाइलें आधुनिक उपकरणों पर एक सेकंड से बहुत कम में फ़ॉर्मेट और मान्य करती हैं; 50-100 MB रेंज में फ़ाइलें टैब को संक्षेप में फ़्रीज़ कर सकती हैं जब JSON.parse() संरचना पर चलता है। बहुत बड़े JSON (गीगाबाइट, बड़े API एक्सपोर्ट या NDJSON लॉग डंप के लिए विशिष्ट) के लिए, कमांड-लाइन उपकरण (jq, python -m json.tool, node -e) उन्हें बेहतर तरीके से संभालते हैं क्योंकि वे सब कुछ मेमोरी में लोड करने के बजाय स्ट्रीम कर सकते हैं।
"Sort Keys" क्या करता है और मुझे इसे कब उपयोग करना चाहिए?
Sort Keys हर ऑब्जेक्ट की कुंजियों को पुनरावर्ती रूप से वर्णानुक्रमित करता है। डेटा सिमेंटिक्स अपरिवर्तित हैं (JSON ऑब्जेक्ट कुंजी क्रम spec के अनुसार तकनीकी रूप से अपरिभाषित है, हालाँकि अधिकांश पार्सर सम्मिलन क्रम संरक्षित करते हैं) लेकिन आउटपुट कैनोनिकल हो जाता है। दो JSON दस्तावेज़ों को डिफ़ करने के लिए उपयोगी जो सिमेंटिक रूप से समतुल्य होने चाहिए (बिना सॉर्टिंग के, कुंजी-क्रम अंतर शोर डिफ़्स उत्पन्न करते हैं), और पुनरुत्पादित बिल्ड आउटपुट उत्पन्न करने के लिए (एक ही डेटा को हमेशा बाइट-समान JSON में सीरियलाइज़ होना चाहिए चाहे वह मेमोरी में कैसे भी निर्मित किया गया हो)।
क्या मेरे JSON दस्तावेज़ अपलोड किए जाते हैं?
नहीं। सभी पार्सिंग, सत्यापन, फ़ॉर्मेटिंग, सॉर्टिंग और tree रेंडरिंग आपके ब्राउज़र में JSON.parse() और JavaScript के माध्यम से होती है। पेस्ट किया गया JSON कभी नेटवर्क पार नहीं करता। DevTools के नेटवर्क टैब में सत्यापित करें जब आप Format पर क्लिक करते हैं (कोई अनुरोध फ़ायर नहीं होता), या लोड होने के बाद पृष्ठ को ऑफ़लाइन (हवाई जहाज मोड) करें। मालिकाना API प्रतिक्रियाओं, आंतरिक कॉन्फ़िगरेशन, टोकन या सत्र डेटा वाले JSON, या NDA द्वारा कवर की गई किसी भी चीज़ के लिए सुरक्षित।
संबंधित टूल
मुफ़्त Base64 एनकोडर और डिकोडर ऑनलाइन
पाठ को Base64 में एनकोड करें या Base64 को तुरंत पाठ में डिकोड करें। फ़ाइल-से-Base64 रूपांतरण का समर्थन करता है। मुफ़्त, कोई साइन-अप नहीं, आपके ब्राउज़र में चलता है।
मुफ़्त Markdown प्रीव्यूअर ऑनलाइन
Markdown लिखें और साइड बाय साइड लाइव रेंडर किए गए प्रीव्यू देखें। हेडिंग्स, बोल्ड, इटैलिक, कोड, टेबल, सूचियाँ और अन्य को समर्थन करता है। मुफ़्त.
मुफ़्त शब्द और वर्ण काउंटर ऑनलाइन
नीचे दिए गए पाठ को पेस्ट या टाइप करें शब्द गणना, वर्ण गणना, वाक्य, पैराग्राफ और अनुमानित पढ़ने का समय तुरंत देखने के लिए। मुफ़्त, कोई साइन अप नहीं.