JSON फ़ॉर्मैटर
input.json
अपना JSON यहाँ पेस्ट करें
या कोई .json फ़ाइल यहाँ कहीं भी छोड़ दें
फ़ॉर्मैट किया गया आउटपुट यहाँ दिखेगा।
फ़ॉर्मैटिंग असल में क्या करती है
JSON फ़ॉर्मैट करना दरअसल पार्स करना और फिर दोबारा सीरियलाइज़ करना है। डॉक्यूमेंट को एक वैल्यू में पढ़ा जाता है, फिर हर कॉमा के बाद नई लाइन और हर नेस्टिंग लेवल पर तय इंडेंट के साथ लिखा जाता है। डेटा मॉडल में कुछ नहीं बदलता — सिर्फ़ टोकन के बीच के बाइट बदलते हैं।
यह अंतर मायने रखता है, क्योंकि इस राउंड ट्रिप में दो चीज़ें नॉर्मलाइज़ होती हैं:
-
नंबर अपने सबसे छोटे रूप में लिखे जाते हैं।
1.50बनता है1.5,1e3बनता है1000, और-0बनता है0। वैल्यू वही रहती है, लिखावट मानक हो जाती है। -
ग़ैर-ज़रूरी एस्केप हट जाते हैं।
"\u0041"बनता है"A"। जो एस्केप JSON के लिए ज़रूरी हैं — कोट, बैकस्लैश और कंट्रोल कैरेक्टर — वे बने रहते हैं। - 253−1 से बड़े इंटीजर की प्रिसिशन खो जाती है। यह JavaScript के नंबर टाइप की सीमा है, इस टूल की नहीं। बड़े ID को स्ट्रिंग के रूप में रखें।
इंडेंट कितना रखें
इंडेंट सिलेक्टर तुरंत लागू होता है और आपकी अगली विज़िट के लिए याद रहता है। मोटा नियम:
- 2 स्पेस — API रिस्पॉन्स, कोड रिव्यू में पेस्ट करने वाला कुछ भी, और वह सब जो
JSON.stringify(v, null, 2)के आउटपुट से मेल खाना चाहिए। - 4 स्पेस — हाथ से लिखी जाने वाली कॉन्फ़िग फ़ाइलें, जहाँ नेस्टिंग कम पर लाइनें लंबी होती हैं।
- टैब — रिपॉज़िटरी में कमिट होने वाली फ़ाइलें, जहाँ हर योगदानकर्ता अपनी चौड़ाई चुन सके।
कमांड लाइन पर वही काम
jq . input.json 2-स्पेस इंडेंट के साथ फ़ॉर्मैट करता है, जो इस पेज के डिफ़ॉल्ट आउटपुट के
बराबर है। ब्राउज़र वाला तरीका तब जीतता है जब JSON फ़ाइल में नहीं, क्लिपबोर्ड में हो; जब 4,000 लाइनें
पढ़ने की जगह आप ट्री में क्लिक करना चाहें; या जब पेलोड ऐसा हो जिसे आप
किसी ऐसे टूल में नहीं डालना चाहते जिसकी आपने जाँच नहीं की।
जो डॉक्यूमेंट पार्स ही नहीं होता
फ़ॉर्मैटर वह इंडेंट नहीं कर सकता जिसे वह पढ़ न सके, इसलिए अमान्य डॉक्यूमेंट पर आउटपुट की जगह एरर मिलता है। एरर पैनल लाइन, कॉलम, गलती वाली सोर्स लाइन और ठीक उस कैरेक्टर के नीचे कैरेट दिखाता है, साथ ही यह भी कि पार्सर को वहाँ क्या चाहिए था। एरर पर जाएँ आपका कर्सर उसी कैरेक्टर पर रख देता है। अगर गड़बड़ी आम “लगभग-JSON” वाली है तो ठीक करें उसे सुधार कर एक ही कदम में फ़ॉर्मैट कर देता है — पूरी सूची वैलिडेटर पर है।
सामान्य प्रश्न
क्या फ़ॉर्मैट करने से मेरा डेटा बदलता है?
सिर्फ़ व्हाइटस्पेस, बशर्ते आप “कीज़ सॉर्ट करें” न दबाएँ। प्रॉपर्टी का क्रम, ऐरे का क्रम और हर वैल्यू वैसी ही रहती है जैसी पार्सर ने पढ़ी थी। नंबर और स्ट्रिंग नॉर्मलाइज़ेशन के दो अपवाद ऊपर बताए गए हैं।
2 स्पेस, 4 स्पेस या टैब — क्या चुनें?
JSON के लिए 2 स्पेस असल डिफ़ॉल्ट है — JSON.stringify(value, null, 2), jq और Prettier तीनों यही देते हैं। 4 स्पेस उन कॉन्फ़िग फ़ाइलों के लिए ठीक है जिन्हें इंसान हाथ से बदलता है। टैब हर पाठक को अपनी चौड़ाई चुनने देते हैं और डिस्क पर थोड़े छोटे पड़ते हैं।
क्या ऐसा JSON फ़ॉर्मैट हो सकता है जो अभी वैध नहीं है?
सीधे नहीं — फ़ॉर्मैट करने के लिए पार्स ज़रूरी है। पहले “ठीक करें” दबाएँ: यह ट्रेलिंग कॉमा, सिंगल कोट, बिना कोट वाली कीज़ और कमेंट सुधारता है, फिर नतीजा फ़ॉर्मैट कर देता है।
मेरा बड़ा नंबर क्यों बदल गया?
JavaScript के नंबर IEEE 754 डबल होते हैं, इसलिए 2^53−1 से बड़े इंटीजर पार्स होते ही प्रिसिशन खो देते हैं। अगर आपके पेलोड में 64-बिट ID या बहुत सटीक दशमलव हैं तो उन्हें JSON में स्ट्रिंग के रूप में रखें। यह हर JavaScript-आधारित JSON टूल पर लागू होता है, Node पर भी।
बाकी टूलकिट
वही इंजन, वही प्राइवेसी — हर पेज पूरी तरह आपके ब्राउज़र में चलता है।