टूल उपयोग FAQ: डेटा, फ़ाइलें और एक्सपोर्ट
क्या डेटा अपलोड होता है, कितनी बड़ी फ़ाइल काम करती है, क्या कुछ लोकल संग्रहीत होता है, चीनी escape में क्यों बदल जाता है: दस प्रश्न जो ऑनलाइन JSON टूल की असली सीमाएँ स्पष्ट करते हैं।
इस साइट के टूल और JSON स्पेसिफिकेशन के बारे में सबसे अधिक पूछे जाने वाले प्रश्नों को परिदृश्य के अनुसार समूहित करता है, और अस्पष्ट निष्कर्ष के बजाय ऐसा उत्तर देता है जिस पर सीधे काम किया जा सके।
25 लेखक्या डेटा अपलोड होता है, कितनी बड़ी फ़ाइल काम करती है, क्या कुछ लोकल संग्रहीत होता है, चीनी escape में क्यों बदल जाता है: दस प्रश्न जो ऑनलाइन JSON टूल की असली सीमाएँ स्पष्ट करते हैं।
क्या कमेंट की अनुमति है, ट्रेलिंग कॉमा एरर क्यों देता है, क्या कुंजियों पर कोट ज़रूरी हैं, 9007199254740993 क्यों बदल जाता है — बारह निष्कर्ष, हर एक RFC 8259 के सामने जाँचा गया।
पाथ क्वेरी में JSONPath उपयोग करें या Pointer, Patch और Merge Patch में कैसे चुनें, Schema क्या रोक सकता है, और ड्राफ़्ट संस्करण कैसे चुनें — सब एक ही बार में समझाया गया।
कुछ दर्जन MB की JSON फ़ाइल क्यों नहीं खुलती, डीप क्लोन कितना महँगा है, __proto__ प्रदूषण कैसे रोकें, और XSS कहाँ से घुसता है — लक्षण के अनुसार सजाए गए दस प्राथमिक-उपचार निष्कर्ष।
नामकरण शैली, समय फ़ॉर्मैट, null का अर्थ, enum आकार, कॉन्फ़िग फ़ॉर्मैट, fixture संगठन, और merge conflicts — बारह ऐसे समझौते जिन पर टीमें वाकई बहस करती हैं।
RFC 8259 में कमेंट सिंटैक्स नहीं है, इसलिए // और block comments JSON.parse को throw करा देते हैं। इसके बजाय JSON5 या JSONC, _comment फ़ील्ड, Schema description, या YAML उपयोग करें।
ट्रेलिंग कॉमा JavaScript ऑब्जेक्ट लिटरल में वैध हैं और JSON में घातक। यहाँ सटीक एरर, उसे पैदा करने वाला RFC 8259 व्याकरण, और तीन ऐसे समाधान हैं जो वास्तव में टिकते हैं।
UTF-8 BOM तीन अदृश्य बाइट्स हैं, इसलिए JSON.parse पहले ही अक्षर पर विफल होता है और लाइन 1 कॉलम 1 बताता है, जिससे फ़ाइल खाली या कटी-फटी लगती है।
JSON में केवल दशमलव number literals होते हैं। JSON.stringify NaN और Infinity को बिना चेतावनी null बना देता है, इसीलिए प्रोडक्शन में "संख्या फ़ील्ड कभी-कभी null है" बार-बार दिखता है।
2^53-1 से ऊपर के पूर्णांक JSON.parse में प्रिसिज़न खो देते हैं। Snowflake IDs, ऑर्डर नंबर और डेटाबेस bigints सब इससे गुज़रते हैं, इसलिए उन्हें शुरू से अंत तक स्ट्रिंग के रूप में रखें।
\u4e2d\u6587 escape वैध Unicode है, एन्कोडिंग विफलता नहीं। असली mojibake अलग दिखता है, और दोनों में अंतर करने से तय होता है कि वास्तव में क्या ठीक करना है।
कड़ाई से सुपरसेट क्रम में: JSONC कमेंट जोड़ता है; JSON5 सिंगल कोट्स, बिना कोट की कुंजियाँ, ट्रेलिंग कॉमा और hex संख्याएँ जोड़ता है। गलत चुनाव आपके एडिटर नहीं, API को तोड़ता है।
JSON ब्रेसिज़ से सीमाएँ तय करता है और YAML इंडेंटेशन से: मशीनों को JSON दें, कॉन्फ़िग हाथ से संपादित करने वाले लोगों को YAML। कमेंट, anchors और multi-document संरचना कन्वर्ज़न के बाद नहीं बचती।
JSON Pointer एक अद्वितीय पता है जिसे key के रूप में संग्रहीत किया जा सकता है; JSONPath एक query भाषा है। गलत वाला चुनने से कॉन्फ़िग अपडेट टूट जाते हैं या टूटा हुआ JSONPath दोबारा बनाना पड़ता है।
Schema संरचना और टाइप नियंत्रित करता है, व्यावसायिक अर्थ नहीं। यह गायब फ़ील्ड, गलत टाइप और सीमा से बाहर enums रोकता है, जबकि शून्य से अधिक राशि जैसे नियम code में ही रहते हैं।
2020-12 वर्तमान है और `$defs`, `prefixItems` तथा `unevaluatedProperties` जोड़ता है, पर कई टूल अब भी केवल draft-07 बोलते हैं। अपनी पूरी toolchain क्या समर्थन करती है, उससे चुनें।
json-schema-to-typescript और quicktype एक कमांड में .d.ts बना देते हैं, पर वह केवल draft है: optionality, unions, additionalProperties और dates पर एक बार इंसानी जाँच चाहिए।
गलत क्रम में optimise करने से हर library बदलना बेकार हो जाता है। network, parse और render को अलग-अलग मापें, फिर parses घटाएँ, payload छोटा करें और stream करें।
JSON.parse __proto__ को सामान्य key मानता है; नुकसान उस recursive merge में होता है जो Object.prototype में लिखता है, जिससे हर object हमलावर की properties विरासत में पा लेता है।
JSON अपने आप कभी execute नहीं होता। XSS उस पल होता है जब आप उसे HTML की तरह मानते हैं — server-side string concatenation, frontend innerHTML, या JSON को सीधे script tag में inline करना।
यह जानने के लिए privacy policy पढ़ने की ज़रूरत नहीं। network panel खोलें, पेज को offline आज़माएँ, और refresh करके देखें कि कुछ स्थायी रूप से बचा या नहीं। दो मिनट, तीन जाँच, भरोसे की ज़रूरत नहीं।
कोई निश्चित सीमा नहीं है; बाधा आपके tab का memory बजट है। 20MB फ़ाइल parse होने के बाद आमतौर पर 60–100MB बन जाती है, और highlighted DOM उसे दोबारा दोगुना कर सकता है।
Bare objects तब तक साफ़ रहते हैं जब तक metadata की ज़रूरत न पड़े; पूरे envelopes सुरक्षित पर शब्दबहुल होते हैं। अधिकतर प्रोजेक्ट्स के लिए परिणाम के लिए HTTP status और डेटा के लिए स्थिर envelope उपयोग करें।
Epoch numbers और ISO strings के अपने-अपने समझौते हैं, पर असली चीज़ें मिलाने से टूटती हैं। offset के साथ ISO 8601 उपयोग करें, UTC में संग्रहीत करें, उपयोगकर्ता के time zone में render करें।
`null` कहता है कि फ़ील्ड मौजूद है पर उसका कोई मान नहीं; छोड़ने का मतलब है फ़ील्ड मौजूद ही नहीं। PATCH bodies, config merging और form prefill में यही अंतर काटता है।