JSON मिनिफ़ाइ

JSON को सबसे छोटे वैध रूप में मिनिफ़ाइ करें या 2 स्पेस, 4 स्पेस या टैब के साथ प्रीटी-प्रिंट करें। वैकल्पिक कुंजी क्रमबद्ध, लाइव बाइट-बचत आँकड़ा, पूरी तरह आपके ब्राउज़र में चलता है।

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

मिनिफ़िकेशन क्या करता है और क्या नहीं

केवल रिक्त स्थान ही हटाया जाता है

JSON की व्याकरण किसी भी दो टोकन के बीच स्पेस, टैब और न्यूलाइन की अनुमति देती है, और इनमें से कोई भी अर्थ नहीं रखता। मिनिफ़ाइ का अर्थ है उन वैकल्पिक वर्णों में से हर एक को हटाना: {"a": 1, "b": 2} बन जाता है {"a":1,"b":2}। पार्स किया गया मान मेमोरी में बाइट-दर-बाइट समान रहता है, जिस कारण यह ऑपरेशन भेजने से पहले पेलोड पर लागू करना हमेशा सुरक्षित है।

मिनिफ़ाइ जो नहीं करता वह डेटा को संपीड़ित करना है। कुंजी नाम, स्ट्रिंग सामग्री और संख्यात्मक शुद्धता सभी बिल्कुल संरक्षित रहते हैं। यदि आपका दस्तावेज़ बड़ा है क्योंकि वह दस हज़ार रिकॉर्ड में समान बीस फ़ील्ड नामों को दोहराता है, तो मिनिफ़िकेशन इंडेंटेशन को काट देगा लेकिन पुनरावृत्ति को छूए बिना छोड़ देगा — वह काम gzip या किसी अलग स्कीमा का है।

बचत वास्तव में कब मायने रखती है

एक सामान्य प्रीटी-प्रिंटेड API प्रतिक्रिया पर, रिक्त स्थान कच्चे आकार का लगभग 10% से 30% के बीच होता है। यह सार्थक लगता है जब तक कि आपको याद न आए कि लगभग हर HTTP प्रतिक्रिया पहले से ही पारगमन में gzip या brotli द्वारा संपीड़ित है, और संपीड़न एल्गोरिदम स्पेस की श्रृंखलाओं को बेहद अच्छी तरह संभालते हैं। gzip के बाद, मिनिफ़ाइड और फॉर्मैटेड JSON के बीच का अंतर अक्सर 2% से कम होता है।

मिनिफ़िकेशन तीन स्थितियों में अपना स्थान अभी भी बनाए रखता है: किसी HTML पेज या JavaScript बंडल में सीधे एम्बेड किया गया डेटा, जहाँ इसे अलग से संपीड़ित नहीं किया जाता; किसी डेटाबेस कॉलम या कैश में संग्रहण, जहाँ कच्ची स्ट्रिंग ही जगह घेरती है; और कहीं भी जहाँ आप किसी कठोर सीमा के विरुद्ध वर्ण गिन रहे हों, जैसे कि URL पैरामीटर या निश्चित सीमा वाला संदेश फ़ील्ड।

तुलना के लिए कुंजियाँ क्रमबद्ध करना

JSON ऑब्जेक्ट आधिकारिक रूप से अक्रमबद्ध होते हैं, लेकिन हर सीरियलाइज़र कुंजियाँ किसी ठोस क्रम में लिखता है, और दो सिस्टम शायद ही कभी एक ही क्रम चुनते हैं। इससे दो तार्किक रूप से समान दस्तावेज़ों का प्लेन टेक्स्ट diff अपठनीय हो जाता है।

आउटपुट से पहले कुंजियाँ पुनरावर्ती रूप से क्रमबद्ध करने से दोनों दस्तावेज़ों को समान कैननिकल आकार मिलता है, ताकि लाइन diff अंततः केवल वास्तविक परिवर्तन दिखाए। यह पुनरुत्पादनीय बिल्ड और सामग्री-संबोधित कैशिंग के पीछे का वही तरीका है। ध्यान रखें कि क्रमबद्ध करने से बाइट आउटपुट बदल जाता है, इसलिए क्रमबद्ध दस्तावेज़ अब स्रोत सिस्टम द्वारा उत्पन्न के समान नहीं रहता — इसका उपयोग तुलना के लिए करें, सिग्नेचर राउंड-ट्रिप के लिए नहीं।

ओपन-सोर्स सूचना: वैनिला JavaScript में किसी तृतीय-पक्ष लाइब्रेरी के बिना कार्यान्वित।

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

क्या मेरा डेटा कहीं अपलोड किया जाता है?
नहीं। पार्सिंग और पुनः-सीरियलाइज़िंग पूरी तरह आपके ब्राउज़र में अंतर्निहित JSON फ़ंक्शन के साथ होती है, इसलिए दस्तावेज़ पृष्ठ से कभी बाहर नहीं जाता।
क्या मिनिफ़ाइ करने से मेरा डेटा बदलता है?
नहीं। केवल टोकन के बीच का महत्वहीन रिक्त स्थान हटाया जाता है। हर कुंजी, स्ट्रिंग, संख्या और बूलियन अपरिवर्तित रहते हैं, और पार्स किया गया मान समान रहता है।
बचत मेरी उम्मीद से कम क्यों है?
काउंटर कच्चे UTF-8 बाइट मापता है। यदि आपका JSON पहले से ही सघन है, या इसका अधिकांश आकार इंडेंटेशन के बजाय स्ट्रिंग सामग्री है, तो हटाने के लिए बहुत कम रिक्त स्थान है।
क्या मिनिफ़ाइ करना चाहिए यदि मेरा सर्वर पहले से ही gzip का उपयोग करता है?
आमतौर पर नेटवर्क पेलोड के लिए नहीं — gzip स्पेस की श्रृंखलाओं को बहुत कुशलता से संपीड़ित करता है, इसलिए अतिरिक्त लाभ अक्सर 2% से कम होता है। यह एम्बेड किए गए या संग्रहीत JSON के लिए फिर भी मदद करता है।
कुंजियाँ क्रमबद्ध करने से क्या होता है?
यह हर ऑब्जेक्ट की कुंजियों को वर्णानुक्रम में, पुनरावर्ती रूप से पुनः व्यवस्थित करता है। दो तार्किक रूप से समान दस्तावेज़ तब समान टेक्स्ट उत्पन्न करते हैं, जिससे एक प्लेन लाइन diff उपयोगी बन जाता है।
मुझे वैध-प्रतीत होने वाले JSON पर पार्स त्रुटि क्यों मिली?
सख्त व्याकरण ट्रेलिंग कॉमा, सिंगल-कोटेड स्ट्रिंग, टिप्पणियाँ और बिना-कोट वाली कुंजियों को अस्वीकार करता है। वे JavaScript ऑब्जेक्ट लिटरल की विशेषताएँ हैं, JSON नहीं।