मुख्य सामग्री पर जाएं
CuteJSON
↑↓ नेविगेट करें Enter चुनें Esc बंद करें

JSON डेटा प्रकार समझाया गया, पार्सर को तोड़ने वाले किनारे के मामलों के साथ

प्रकाशित 4 मिनट का पाठ Akash Kinkar Pandey द्वारा

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

स्ट्रिंग

दोहरे कोटेशन वाला पाठ, कभी एकल कोटेशन नहीं। 'hello' मान्य JSON नहीं है, केवल "hello" है। एक स्ट्रिंग के अंदर कुछ विशेष अक्षरों को एस्केप करना पड़ता है: स्वयं कोटेशन (\"), बैकस्लैश (\\), और नियंत्रण अक्षर \n, \r, \t, \b और \f। बाकी सब कुछ, जिसमें अधिकांश यूनिकोड पाठ शामिल है, बिना एस्केप के लिखा जा सकता है जब तक फ़ाइल स्वयं वैध UTF-8 हो। JSON Escape and Unescape दोनों दिशाओं में रूपांतरण करता है और सटीक रूप से बताता है कि कौन सा अक्षर खराब एस्केप अनुक्रम में टूटा, सामान्य पार्सर त्रुटि के बजाय।

संख्या

एक ही संख्यात्मक प्रकार, कुछ भाषाओं की तरह अलग पूर्णांक और फ़्लोट प्रकार नहीं। एक JSON संख्या अंकों की एक श्रृंखला है, एक वैकल्पिक दशमलव बिंदु, और एक वैकल्पिक घातांक: 42, -3.14, 2.5e10। कोई हेक्साडेसिमल नहीं, कोई Infinity नहीं, कोई NaN नहीं, और शून्य से भिन्न अंक से पहले अग्रणी शून्य नहीं (0123 अमान्य है, 0.123 ठीक है)। यहाँ सबसे तीखा किनारा: JavaScript का अपना Number प्रकार 64-बिट फ़्लोट है, जो लगभग 2^53 (लगभग नौ खरब) से अधिक हर पूर्णांक को सटीक रूप से दर्शा नहीं सकता। ब्राउज़र कंसोल में 64-बिट डेटाबेस ID या Snowflake ID वाले JSON दस्तावेज़ को JSON.parse से पार्स करें और अंतिम अंक चुपचाप गोल हो सकते हैं। इस साइट का JSON Formatter JSON.parse के बजाय टोकन स्ट्रीम पर बना है ताकि बीस अंकों का पूर्णांक गोल हुए बिना वापस आए, और जो संख्याएँ सुरक्षित रूप से दर्शा नहीं सकता उन्हें बिना बताए गोल करने के बजाय रिपोर्ट करता है।

बूलियन

ठीक दो साहित्य मान, लघु अक्षरों में, बिना कोटेशन के: true और false। "true" एक स्ट्रिंग है, बूलियन नहीं, और बग का एक सामान्य स्रोत जब बूलियन होने वाला फ़ील्ड कहीं ऊपरी धारा में पाठ के रूप में सेरियलाइज़ हो जाता है।

नल

एक साहित्य मान, लघु अक्षर में, बिना कोटेशन के: null। यह मान की जानबूझकर अनुपस्थिति को दर्शाता है, जो किसी पूरी तरह से गायब कुंजी से अलग बात है। {"middleName": null} कहता है “इस व्यक्ति का कोई दूसरा नाम नहीं है, और हमने जाँच की।” बिल्कुल middleName कुंजी के बिना एक दस्तावेज़ इस बारे में कुछ नहीं कहता कि क्या कोई मौजूद है। जो APIs दोनों को मिला देती हैं (गायब कुंजी और नल मान को आपस में बदलकर इस्तेमाल करती हैं) वह भेद प्राप्त करने वाले पक्ष के लिए वापस पाना असंभव बना देती हैं।

एरे

एक क्रमबद्ध सूची, [ ], अल्पविराम से अलग, किसी भी प्रकार के तत्वों के साथ एक ही एरे में मिश्रित प्रकारों सहित: [1, "two", true, null] मान्य JSON है भले ही यह स्कीमा का एक विचित्र विकल्प होगा। क्रम की गारंटी है और महत्वपूर्ण है; एक ही तत्वों वाले दो एरे अलग क्रम में अलग मान होते हैं।

ऑब्जेक्ट

कुंजी-मान युग्मों का एक अक्रमबद्ध सेट, { }, कुंजियाँ हमेशा स्ट्रिंग्स (भले ही "2" जैसी संख्यात्मक दिखने वाली कुंजी एक स्ट्रिंग है, संख्या नहीं), मान किसी भी प्रकार के। एक ऑब्जेक्ट के अंदर एक ही नाम की दो कुंजियाँ व्याकरण से निषिद्ध नहीं हैं, हालाँकि विनिर्देश इस व्यवहार को “अनुशंसित नहीं” कहता है और आगे क्या होता है पार्सर पर छोड़ देता है; अधिकांश कार्यान्वयन, जिनमें JSON.parse शामिल है, चुपचाप अंतिम को रखते हैं और पहली को हटा देते हैं। JSON Validator एक दोहरी कुंजी को चेतावनी के रूप में दर्शाता है बजाय इसके कि एक दोहरी कुंजी वाले दस्तावेज़ को चुपचाप गुजरने दे, क्योंकि कौन सा मान बचता है वह ऐसी बात है जो स्पष्ट निर्णय होनी चाहिए।

जो छह प्रकारों में से कोई भी नहीं रख सकता

कोई तिथि प्रकार नहीं: एक टाइमस्टैम्प एक स्ट्रिंग है, लगभग हमेशा ISO 8601 ("2026-08-24T10:00:00Z"), परंपरा से कि JSON द्वारा लागू कुछ भी होने से। कोई undefined नहीं: एक कुंजी जो JavaScript में undefined होती वह ऑब्जेक्ट से छोड़ दी जाती है बजाय उस मान के साथ लिखने के, क्योंकि JSON के पास उसके लिए कोई साहित्य ही नहीं है। कोई फ़ंक्शन नहीं, कोई Map या Set नहीं, दस्तावेज़ में कहीं भी कोई टिप्पणी नहीं। जिस प्रारूप को इनमें से किसी की आवश्यकता हो (उदाहरण के लिए, इनलाइन टिप्पणियों वाली कॉन्फ़िगरेशन) वह जानबूझकर एक अलग प्रारूप चुन रहा है, JSON एक्सटेंशन नहीं; JSON vs YAML देखें टिप्पणी समर्थन और कुछ अन्य सुविधाओं के साथ आने वाले समझौते के लिए।

इसे आज़माना

कोई भी दस्तावेज़ JSON Viewer में पेस्ट करें और प्रत्येक मान को पेड़ में अपना रंग और बैज मिलता है, जो कच्चे पाठ को अक्षर दर अक्षर पढ़े बिना यह देखने का एक तेज़ तरीका है कि दस्तावेज़ कैसे टाइप किया गया है। वाक्यविन्यास नियमों को एक नज़र में देखने के लिए, JSON Cheat Sheet देखें।

सभी लेखों पर लौटें