T

Text Machine

शक्तिशाली टेक्स्ट टूल्स, आपके ब्राउज़र में

JSON फ़ॉर्मेटर

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

इनपुट JSON

0 पंक्तियाँ · 0 वर्ण

इंडेंट

JSON फ़ॉर्मेटर का उपयोग कैसे करें

  1. 1

    अपना JSON पेस्ट करें

    मिनिफ़ाई किया, गड़बड़, या पहले से इंडेंट किया JSON इनपुट पैनल में पेस्ट करें।

  2. 2

    इंडेंटेशन चुनें

    सुंदर बनाए गए आउटपुट का इंडेंटेशन नियंत्रित करने के लिए 2 स्पेस, 4 स्पेस, या टैब चुनें।

  3. 3

    फ़ॉर्मैट या मिनिफ़ाई करें

    JSON को सुंदर बनाने और सत्यापित करने के लिए 'Format' पर क्लिक करें, या उसे एक ही लाइन में समेटने के लिए 'Minify' पर।

  4. 4

    नतीजा कॉपी करें

    अपनी परियोजना के लिए फ़ॉर्मैट या मिनिफ़ाई किया आउटपुट लेने हेतु 'Copy' बटन का इस्तेमाल करें।

JSON के साथ काम करना: फ़ॉर्मेटिंग, सत्यापन, और वे ग़लतियाँ जो डँसती हैं

JSON असल में है क्या

JSON (JavaScript Object Notation) एक टेक्स्ट-आधारित डेटा-इंटरचेंज फ़ॉर्मेट है, जो HTTP के ऊपर सेवाओं के आपस में बात करने का डिफ़ॉल्ट तरीका बन चुका है। नाम के बावजूद, यह भाषा-स्वतंत्र है: हर मुख्यधारा की भाषा के लिए पार्सर मौजूद हैं, और वायर फ़ॉर्मेट बस UTF-8 टेक्स्ट है। एक दस्तावेज़ ठीक छह मान-प्रकारों से बनता है — ऑब्जेक्ट (अव्यवस्थित कुंजी/मान संग्रह), ऐरे (व्यवस्थित सूचियाँ), स्ट्रिंग, संख्याएँ, बूलियन true और false, और null। आप जो भी सीरियलाइज़ करते हैं, किसी API प्रतिक्रिया से लेकर किसी कॉन्फ़िग फ़ाइल तक, वह इन्हीं छह में टूट जाता है।

दो नियम लोगों को लगातार उलझाते हैं। पहला, किसी ऑब्जेक्ट में कुंजियाँ दोहरे-उद्धरण वाली स्ट्रिंग होनी चाहिए — खाली पहचानकर्ताओं की अनुमति नहीं है, JavaScript ऑब्जेक्ट लिटरल के विपरीत। दूसरा, JSON में पूर्णांक बनाम फ़्लोट का कोई भेद नहीं है और कोई कमेंट सिंटैक्स नहीं है। एक संख्या बस एक संख्या होती है, और आप जो भी मानवीय टिप्पणी छोड़ना चाहें उसे किसी स्ट्रिंग मान के भीतर रहना होगा या पार्स करने से पहले हटाना होगा।

फ़ॉर्मेटिंग बनाम मिनीफ़ाइंग

ये एक ही डेटा के दो दृश्य हैं। फ़ॉर्मेटिंग (जिसे ब्यूटिफ़ाइंग या प्रिटी-प्रिंटिंग भी कहते हैं) न्यूलाइन और इंडेंटेशन डालती है ताकि नेस्टिंग एक नज़र में दिखे — यह वही है जो आप किसी पेलोड को पढ़ते समय, वर्शन कंट्रोल में दो प्रतिक्रियाओं को डिफ़ करते समय, या किसी उदाहरण को दस्तावेज़ में पेस्ट करते समय चाहते हैं। मिनीफ़ाइंग इसका उल्टा करती है: यह एक संक्षिप्त पंक्ति बनाने के लिए तुच्छ व्हाइटस्पेस का हर बाइट हटा देती है, जो वही है जिसे आप नेटवर्क पर भेजते हैं जहाँ हर किलोबाइट विलंबता और बैंडविड्थ खर्च कराता है।

डेटा के लिए दोनों दिशाएँ बिना हानि वाली हैं। JSON में टोकनों के बीच का व्हाइटस्पेस कभी सार्थक नहीं होता, इसलिए किसी 40-पंक्ति वाले ऑब्जेक्ट को एक अकेली पंक्ति में समेटने और फिर से फैलाने पर एक जैसे पार्स किए मान मिलते हैं। केवल बाइट-गिनती और पठनीयता बदलती है, और ठीक यही वजह है कि यह टूल किसी एक शैली को थोपने के बजाय दोनों बटन प्रदान करता है।

सिंटैक्स त्रुटियाँ जिनसे आप असल में टकराएँगे

सबसे आम अकेली त्रुटि पीछे लगा अल्पविराम है — किसी ऐरे के अंतिम तत्व या किसी ऑब्जेक्ट की अंतिम जोड़ी के बाद एक अल्पविराम। JavaScript इसे सहन कर लेता है; JSON इसकी मनाही करता है, इसलिए एक सूची जो बंद करने वाले ब्रैकेट से पहले अल्पविराम पर ख़त्म होती है, पार्स होने में विफल हो जाएगी। इसके ठीक पीछे हैं दोहरे उद्धरणों के बजाय एकल उद्धरण (JSON स्ट्रिंग को दोहरे उद्धरण ही इस्तेमाल करने चाहिए) और सीधे JavaScript स्रोत से कॉपी की गई बिना-उद्धरण वाली कुंजियाँ।

अन्य बार-बार सामने आने वाले अपराधी: एक भटकी हुई टिप्पणी (// या ब्लॉक शैली), जो JSONC और JSON5 में मान्य है पर सख्त JSON में नहीं; NaN, Infinity, या undefined जैसे मान, जो विनिर्देश में बस मौजूद ही नहीं हैं; और किसी स्ट्रिंग के भीतर एक शाब्दिक टैब या न्यूलाइन जैसे बिना-एस्केप किए नियंत्रण वर्ण। जब सत्यापनकर्ता किसी पंक्ति की ओर इशारा करे, तो उजागर की गई स्थिति से एक-दो वर्ण पहले नज़र दौड़ाइए — पार्सर अक्सर असली ग़लती के बाद वाले अगले टोकन पर ही समस्या को भाँप पाता है।

एक इंडेंटेशन शैली चुनना

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

इंडेंटेशन पूरी तरह सजावटी है और दस्तावेज़ के पार्स होते ही हटा दिया जाता है, इसलिए यह शुद्धता को कभी प्रभावित नहीं करता। एक चौड़ाई चुनिए, उसे सुसंगत रूप से लागू कीजिए, और फ़ॉर्मेटर को किसी दूसरे स्रोत से पेस्ट की गई हर चीज़ को सामान्य करने दीजिए।

कुंजी-क्रम और डेटा अखंडता

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

अगर आप स्थिर डिफ़ या सामग्री-हैशिंग के लिए विहित, क्रमबद्ध आउटपुट चाहते ही हैं, तो वह एक जान-बूझकर किया गया, अलग ऑपरेशन है जिसे आपको जानते-बूझते चुनना चाहिए — किसी प्रिटी-प्रिंटिंग का दुष्प्रभाव नहीं। फ़ॉर्मेट और पुनः-क्रम को अलग रखने का मतलब है कि आप हमेशा ठीक-ठीक जानते हैं कि क्या बदला।

संख्याएँ, परिशुद्धता, और Unicode

JSON संख्याएँ दशमलव होती हैं और उनकी कोई घोषित आकार-सीमा नहीं होती, लेकिन जो JavaScript इंजन उन्हें आपके ब्राउज़र में पार्स करता है, वह उन्हें 64-बिट फ़्लोटिंग पॉइंट के रूप में संग्रहीत करता है। इसका मतलब है कि लगभग नौ क्वाड्रिलियन (सुरक्षित-पूर्णांक सीमा) से बड़े पूर्णांक एक राउंड ट्रिप पर परिशुद्धता खो सकते हैं, यही वजह है कि बड़े ID, snowflake मान, और धन-राशियाँ अक्सर कच्ची संख्याओं के बजाय स्ट्रिंग के रूप में भेजी जाती हैं। अगर सटीकता मायने रखती है, तो मान को उद्धरण में रखिए।

स्ट्रिंग पूर्ण Unicode होती हैं। आप वर्णों को सीधे UTF-8 के रूप में या बैकस्लैश-u एस्केप अनुक्रमों के रूप में लिख सकते हैं, और दोनों रूप एक ही कोड बिंदुओं में पार्स होते हैं। चूँकि फ़ॉर्मेट शुरू से अंत तक UTF-8 टेक्स्ट है, लहजे वाले अक्षर, ग़ैर-लैटिन लिपियाँ, और इमोजी फ़ॉर्मेटिंग और मिनीफ़ाइंग के बावजूद अछूते बचे रहते हैं।

सब कुछ आपके ब्राउज़र में रहता है

सारी पार्सिंग, सत्यापन, और पुनः-सीरियलाइज़ेशन स्थानीय रूप से JavaScript में चलते हैं। आप जो भी पेस्ट करते हैं वह किसी सर्वर पर अपलोड, लॉग, या संग्रहीत नहीं किया जाता, इसलिए ऐसी API प्रतिक्रियाओं को फ़ॉर्मेट करना सुरक्षित है जिनमें एक्सेस टोकन, आंतरिक पहचानकर्ता, या ग्राहक डेटा हों। व्यावहारिक सीमा किसी अपलोड सीमा के बजाय आपके डिवाइस की मेमोरी है, इसलिए बड़े एक्सपोर्ट किसी ठीक-ठाक स्पेसिफ़िकेशन वाली मशीन पर बढ़िया फ़ॉर्मेट होते हैं।

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

अक्सर पूछे जाने वाले प्रश्न

Format और Minify में क्या अंतर है?
Format (beautify) लाइन ब्रेक और इंडेंटेशन जोड़ता है ताकि संरचना पढ़ने में आसान हो, जबकि Minify सारा गैरज़रूरी व्हाइटस्पेस हटाकर प्रोडक्शन पेलोड के लिए सबसे छोटा संभव सिंगल-लाइन JSON बनाता है।
क्या फ़ॉर्मैटर मेरा JSON सत्यापित करता है?
हाँ। अगर JSON अमान्य है, तो यह आउटपुट देने के बजाय एक एरर दिखाता है जो उजागर करता है कि समस्या कहाँ है, ताकि आप जल्दी से गुमशुदा कॉमा, ब्रैकेट, या उद्धरण ढूँढ सकें।
कौन-से इंडेंटेशन विकल्प उपलब्ध हैं?
आप 2 स्पेस, 4 स्पेस, या टैब अक्षरों के साथ फ़ॉर्मैट कर सकते हैं, जो आपको अपनी टीम या परियोजना की कोडिंग शैली से मेल खाने देता है।
क्या यह मेरी keys को दोबारा क्रमित करता है या डेटा बदलता है?
नहीं। यह केवल मौजूदा संरचना को दोबारा इंडेंट या समेटता है। Key का क्रम और सभी मान बिल्कुल वैसे ही बने रहते हैं जैसे वे आपके इनपुट में दिखते हैं।
क्या मेरा JSON अपलोड होता है, और क्या यह बड़ी फ़ाइलें संभाल सकता है?
कुछ भी अपलोड नहीं होता। फ़ॉर्मैटर पूरी तरह आपके ब्राउज़र में चलता है, इसलिए यह संवेदनशील डेटा के लिए सुरक्षित है, और यह बड़े दस्तावेज़ संभाल सकता है जो केवल आपके डिवाइस की उपलब्ध मेमोरी से सीमित हैं।

संबंधित टूल्स

इन उपयोगी टूल्स के साथ आगे बढ़ें

HTML कम्प्रेसर

HTML से टेक्स्ट कनवर्टर

Regex परीक्षक

JWT डिकोडर

CSS ग्रेडिएंट जेनरेटर

CSS बॉक्स शैडो जेनरेटर