এমন কোনও প্রোগ্রাম লিখুন যা নির্ধারণ করে যে এর ইনপুটটি বৈধ JSON কিনা ।
ইনপুট: এএসসিআইআই পাঠ্য:
[\x00-\x7F]*দ্রষ্টব্য: যদি ASCII সমস্যাযুক্ত হয় তবে নির্দ্বিধায় অন্য এনকোডিংটি ব্যবহার করুন, তবে এটি আপনার পোস্টে নির্দেশ করুন।
আউটপুট:
ValidবাInvalid। চলন্ত নিউলাইন বাদ দেওয়া যেতে পারে।উদাহরণ:
$ echo '{"key": "value"}' | ./json-validate Valid $ echo '{key: "value"}' | ./json-validate Invalidনিয়মাবলী:
- কোনও JSON পার্সিং লাইব্রেরি ব্যবহার করবেন না।
- আংশিক-সঠিক সমাধানগুলি অনুমোদিত, তবে তা ভ্রান্ত।
- আপনার পরীক্ষার স্যুট স্কোর পোস্ট করুন (নীচে দেখুন)।
সবচেয়ে কম সঠিক সমাধান ধিক্কার জানাই।
দয়া করে আপনার প্রোগ্রামে json-uthorate-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 ব্যাকরণের সংক্ষিপ্ত সংজ্ঞা।
- আরএফসি 4627 - জেএসএন স্পেসিফিকেশন
- json- validate.c - একটি 200-লাইনের বাস্তবায়ন যা পরীক্ষার পরীক্ষায় উত্তীর্ণ হয়।
জেএসওএন ব্যাকরণটি নিম্নরূপ:
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()। জেএসএনে হোয়াইটস্পেস হ'ল[\t\n\r ]তবেisspace()এটি স্থান হিসাবে\vউল্লম্ব ট্যাব এবং\f(ফর্ম ফিড) আচরণ করে। যদিও শব্দের এমনটি রয়েছে যা কেবলমাত্রের চেয়ে বেশি গ্রহণisdigit()করতে পারে, আমরা এখানে অনুমান করি যে ASCII তে ইনপুট রয়েছে in[0-9] \x7Fপ্রযুক্তিগতভাবে একটি নিয়ন্ত্রণ চরিত্র, তবে জেএসএন আরএফসি এটি উল্লেখ করে না (এটি কেবল উল্লেখ করে[\x00-\x1F]), এবং বেশিরভাগ জেএসএন পার্সার\x7Fস্ট্রিংগুলিতে অক্ষরগুলি স্বীকার করার প্রবণতা পোষণ করে। এই অস্পষ্টতার কারণে সমাধানগুলি সেগুলি গ্রহণ করতে বা না গ্রহণ করতে বেছে নিতে পারে।
{key: "value"}অবৈধ জেএসওএন বিবেচনা করা হয়? এটি বৈধ জাভাস্ক্রিপ্ট।