एक प्रोग्राम लिखें जो यह निर्धारित करता है कि उसका इनपुट वैध JSON है या नहीं ।
इनपुट: ASCII टेक्स्ट:
[\x00-\x7F]*नोट: यदि ASCII समस्याग्रस्त है, तो एक और एन्कोडिंग का उपयोग करने के लिए स्वतंत्र महसूस करें, लेकिन इसे अपनी पोस्ट में इंगित करें।
आउटपुट:
ValidयाInvalid। अनुगामी न्यूलाइन को छोड़ा जा सकता है।उदाहरण:
$ echo '{"key": "value"}' | ./json-validate Valid $ echo '{key: "value"}' | ./json-validate Invalidनियम:
- JSON पार्सिंग लाइब्रेरी का उपयोग न करें।
- आंशिक रूप से सही समाधानों की अनुमति है, लेकिन उस पर ध्यान केंद्रित किया गया।
- अपना टेस्ट सूट स्कोर पोस्ट करें (नीचे देखें)।
सबसे छोटा सही समाधान जीतता है।
कृपया अपने प्रोग्राम पर json-validate-test-suite.sh चलाएं , और अपना स्कोर पोस्ट करें। उदाहरण:
$ ./json-validate-test-suite.sh ./buggy-prog
fail: should be invalid: [ 0.1e ]
fail: should be invalid: [ 0.1e+-1 ]
fail: should be invalid: [ 0.1e-+1 ]
score: 297/300
संसाधन:
- json.org - JSON व्याकरण की संक्षिप्त परिभाषा आसान करने के लिए चित्रों का पालन करें।
- RFC 4627 - JSON विनिर्देशन
- json-validate.c - एक 200-लाइन कार्यान्वयन जो पास हो जाता है।
JSON व्याकरण इस प्रकार है:
json: object | array
object: '{' members? '}'
members: pair (',' pair)*
pair: string ':' value
array: '[' elements? ']'
elements: value (',' value)*
value: string
| number
| object
| array
| 'true'
| 'false'
| 'null'
string: '"' char* '"'
char: [^"\\\x00-\x1F]
| '\' escape
escape: ["\\/bfnrt]
| u [0-9A-Fa-f]{4}
number: '-'? (0 | [1-9][0-9]*) ('.' [0-9]+)? ([Ee] [+-]? [0-9]+)?
इसके अलावा, व्हॉट्सएप छह संरचनात्मक पात्रों में से किसी के पहले या बाद में दिखाई दे सकता है {}[]:,
ws = [\t\n\r ]*
निम्नलिखित को ध्यान में रखें:
- जैसे कार्यों से सावधान रहें
isspace()। JSON में व्हॉट्सएप है[\t\n\r ], लेकिन अंतरिक्ष के रूप में (ऊर्ध्वाधर टैब) और (फॉर्म फ़ीड)isspace()भी मानता है। हालाँकि, शब्द में वह है जो केवल से अधिक स्वीकार कर सकता है, यहाँ उपयोग करने के लिए ठीक होना चाहिए, क्योंकि हम मानते हैं कि इनपुट ASCII में है।\v\fisdigit()[0-9] \x7Fतकनीकी रूप से एक नियंत्रण चरित्र है, लेकिन JSON RFC इसका उल्लेख नहीं करता है (यह केवल उल्लेख करता है[\x00-\x1F]), और अधिकांश JSON पार्सर्स को\x7Fतार में वर्ण स्वीकार करते हैं। इस अस्पष्टता के कारण, समाधान या तो उन्हें स्वीकार करने के लिए चुन सकते हैं या नहीं।
{key: "value"}अमान्य JSON क्यों माना जाता है? यह मान्य जावास्क्रिप्ट है।