JSON—JavaScript Object Notation—গঠনমূলক ডেটা বিনিময়ের জন্য সর্বব্যাপী, পাঠ্য-ভিত্তিক বিন্যাস। এটি IETF দ্বারা RFC 8259 এবং Ecma International দ্বারা ECMA-404হিসাবে মানক করা হয়েছে, যা একসাথে আধুনিক API, লগ, কনফিগ এবং ডেটাবেসকে শক্তি দেয় এমন কমপ্যাক্ট, ভাষা-অজ্ঞেয় সিনট্যাক্সকে সংজ্ঞায়িত করে।
একটি JSON মান হয় একটি অবজেক্ট, অ্যারে, স্ট্রিং, সংখ্যা, বা লিটারেল true, false, বা null এর মধ্যে একটি; অবজেক্টগুলি স্ট্রিংকে মানগুলিতে ম্যাপ করে এবং অ্যারেগুলি অর্ডার করা মান ধারণ করে—গঠনমূলক অক্ষরগুলির চারপাশে নগণ্য হোয়াইটস্পেস অনুমোদিত (RFC 8259, ECMA-404)। যদিও JSON জাভাস্ক্রিপ্ট থেকে উদ্ভূত হয়েছে, এটি ভাষা-স্বাধীন এবং কার্যত সর্বত্র সমর্থিত (MDN: JSON)। তারে, ডি-ফ্যাক্টো এবং প্রস্তাবিত এনকোডিং হল UTF-8 (RFC 8259 §8.1)। অতিরিক্ত ইন্টারপ নিরাপত্তার জন্য, I-JSON প্রোফাইল (RFC 7493) এনকোডিং এবং সংখ্যাসূচক পরিসরের आसपासের নিয়মগুলিকে কঠোর করে।
জাভাস্ক্রিপ্টে, গ্লোবাল JSON অবজেক্ট দুটি ওয়ার্কহরস প্রকাশ করে:JSON.parse (একটি ঐচ্ছিক reviver সহ) এবং JSON.stringify (সুন্দর মুদ্রণের জন্য রিপ্লেসার/স্পেসিং সহ), যেমন MDN-এ নথিভুক্ত করা হয়েছে (parse, stringify)।
JSON-এর সংখ্যা ব্যাকরণ দশমিক, কিন্তু স্পেকটি নির্ভুলতা বা পূর্ণসংখ্যা/ফ্লোট পার্থক্য নির্দেশ করে না। বাস্তবায়নগুলি কীভাবে তাদের উপস্থাপন করতে হয় তা বেছে নেয় (RFC 8259 §6)। জাভাস্ক্রিপ্ট এবং Node.js-এ, Number হল IEEE-754 ডাবল নির্ভুলতা, যার অর্থ হল केवल [−(2^53−1), 2^53−1]-এর মধ্যে পূর্ণসংখ্যাগুলিই ঠিক নিরাপদ—দেখুন Number.MAX_SAFE_INTEGER এবং BigInt প্রকার। এই কারণেই পাবলিক API-গুলি প্রায়শই ID-গুলিকে স্ট্রিং হিসাবে পাঠায় এবং "নিরাপদ পূর্ণসংখ্যা" স্পষ্টভাবে যাচাই ক রে।
ব্যবহার পরিপক্ক হওয়ার সাথে সাথে, JSON-কে ঠিকানা এবং পরিবর্তন করার জন্য মানক আবির্ভূত হয়েছে। JSON পয়েন্টার (RFC 6901) মানগুলি সনাক্ত করার জন্য একটি ক্ষুদ্র, স্ল্যাশ-দ্বারা সীমাবদ্ধ সিনট্যাক্স (যেমন, /a/b/0) যার মধ্যে ~ এবং /-এর জন্য এস্কেপিং নিয়ম রয়েছে। JSON প্যাচ (RFC 6902) আংশিক আপডেটগুলিকে অর্ডার করা অপারেশন (add, remove, replace, move, copy, test) হিসাবে মডেল করে এবং application/json-patch+json হিসাবে ভ্রমণ করে। সহজ পার্থক্যের জন্য, JSON মার্জ প্যাচ (RFC 7386) একটি নথি-আকৃতির মার্জ ব্যবহার করে: উপস্থিত ক্ষেত্রগুলি যোগ/প্রতিস্থাপন করা হয়; একটি ক্ষেত্রকে null-এ সেট করা এটিক ে মুছে দেয়। অনেক ফ্রেমওয়ার্ক বাক্সের বাইরে এক বা উভয় ফর্ম সমর্থন করে।
JSON নিজেই স্কিমা-হীন, কিন্তু ইকোসিস্টেমগুলি বৈধকরণ, ডকুমেন্টেশন এবং কোডজেনের জন্য স্কিমার উপর নির্ভর করে। JSON স্কিমা 2020-12 পরিবার type, properties, items, এবং রচনা কীওয়ার্ডের মতো সীমাবদ্ধতা নির্দিষ্ট করে, এবং OpenAPI 3.1-এর সাথে সারিবদ্ধ হয়। কোড-জেন-কেন্দ্রিক ওয়ার্কফ্লোগুলির জন্য, JSON প্রকার সংজ্ঞা (RFC 8927) একটি ইচ্ছাকৃতভাবে কম ገላጭ ভাষা প্রদান করে যা মূলধারার প্রকার সিস্টেমে অনুমানযোগ্যভাবে ম্যাপ করে।
ক্লাসিক JSON প্রতি পেলোডে একটি সম্পূর্ণ পাঠ্য আশা করে, যা স্ট্রিমিং লগ এবং দীর্ঘজীবী প্রতিক্রিয়াগু লিকে জটিল করে তোলে। দুটি প্যাটার্ন সাহায্য করে:
application/json-seq হিসাবে নিবন্ধিত।যখন ব্যান্ডউইথ বা গতি প্রাধান্য পায়, তখন "বাইনারি JSON" বিন্যাসগুলি JSON-এর ডেটা মডেলকে সংরক্ষণ করে যখন দক্ষতার জন্য মানব পাঠযোগ্যতার व्यापार করে:
যেহেতু JSON শুধু পাঠ্য, তাই বেশিরভাগ ঝুঁকি আসে আপনি কীভাবে এটি পরিবহন এবং হ্যান্ডেল করেন তা থেকে:
<script>-এর মাধ্যমে ডেটা অনুরোধ করা একটি কলব্যাক সহ) ক্রস-অরিজিন অনুরোধের জন্য একটি প্রি-CORS ওয়ার্কঅ্যারাউন্ড ছিল কিন্তু বিপজ্জনক—এটি নির্বিচারে স্ক্রিপ্ট সম্পাদন করে। CORS-কে আসল application/json প্রতিক্রিয়া সহ পছন্দ করুন (OWASP: JSONP অপব্যবহার)।JSON RFC 4627 (2006)-এর অধীনে আত্মপ্রকাশ করেছে; নিবন্ধিত মিডিয়া প্রকার হল application/json, যার স্পেসিফিকেশন এখন RFC 8259-এর দিকে নির্দেশ করে। JSON প্রতিক্রিয়াগুলিতে "Charset" প্যারামিটারগুলি সাধারণত অপ্রয়োজনীয় কারণ UTF-8 পাবলিক ইন্টারনেটে ডিফল্ট।
ডেভেলপাররা প্রায়শই কনফিগে মন্তব্য, ট্রেলিং কমা, বা একক-উদ্ধৃত স্ট্রিং চান। এটি স্ট্যান্ডার্ড JSON-এর বাইরে, কিন্তু JSON5 মানব-সম্পাদিত ফাইলগুলির জন্য একটি ভালভাবে নথিভুক্ত সুপারসেট প্রদান করে। যতক্ষণ না আপনি উভয় প্রান্ত নিয়ন্ত্রণ করেন, ততক্ষণ পাবলিক API-তে JSON5 পাঠানো এড়িয়ে চলুন।
JSON-এর সাফল্য একটি ছোট পৃষ্ঠ এলাকা, ব্যাপক ভাষা সমর্থন, এবং সংলগ্ন মানগুলির একটি বলয়—পয়েন্টার, প্যাচিং, স্কিমা, ক্রম—থেকে আসে যা বিতরিত সিস্টেমের অগোছালো বাস্তবতাগুলিকে কভার করে। মৌলিক বিষয়গুলি (সিনট্যাক্স, এনকোডিং, সংখ্যা) বুঝুন, সঠিক সংলগ্ন মানগুলির উপর ঝুঁকুন, এবং এটি স্ট্যাক এবং পরিষেবা জুড়ে লভ্যাংশ প্রদান করতে থাকবে (RFC 8259, ECMA-404, RFC 6901, RFC 6902, RFC 7386, JSON Schema, JTD, RFC 7464, NDJSON)।
JSON (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন) একটি হালকা ডেটা-ইন্টারচেঞ্জ ফর্ম্যাট যা মানুষের পড়া এবং লেখার জন্য সহজ এবং মেশিনের পার্স এবং জেনারেট করার জন্য সহজ। এটি ওয়েব অ্যাপ্লিকেশনগুলিতে ডেটা ট্রান্সমিট করার জন্য ব্যাপকভাবে ব্যবহৃত হয়।
JSON ফর্ম্যাট করা উপযুক্ত ইন্ডেন্টেশন এবং লাইন ব্রেক যোগ করে এটিকে মানব-পঠনযোগ্য করে তোলে। এটি বিশেষভাবে উপযোগী যখন মিনিফাইড বা কম্প্রেসড JSON ডেটা নিয়ে কাজ করছেন, ডিবাগিং, বা API প্রতিক্রিয়াগুলি পর্যালোচনা করছেন।
JSON বৈধতা যাচাই আপনার JSON স্ট্রিং JSON স্পেসিফিকেশনের সাথে মেনে চলে কিনা তা পরীক্ষা করে। এটি সিনট্যাক্স ত্রুটিগুলি সনাক্ত করে যেমন অনুপস্থিত কমা, বন্ধ না হওয়া বন্ধনী, বা অনুপযুক্ত উদ্ধৃতি, আপনাকে প্রাথমিক পর্যায়ে ত্রুটিগুলি ধরতে সহায়তা করে।
কোড ভিউ সিনট্যাক্স হাইলাইটিং সহ ফর্ম্যাটকৃত JSON কে টেক্সট হিসাবে প্রদর্শন করে, যেমন এটি একটি কোড এডিটরে প্রদর্শিত হয়। ট্রি ভিউ JSON কে একটি ইন্টারঅ্যাক্টিভ, সংকোচনযোগ্য কাঠামো হিসাবে উপস্থাপন করে যেখানে আপনি নেস্টেড অবজেক্ট এবং অ্যারে প্রসারিত এবং সংকুচিত করতে পারেন।
হ্যাঁ! সমস্ত JSON ফর্ম্যাটিং এবং বৈধতা যাচাই সম্পূর্ণভাবে আপনার ব্রাউজারে ঘটে। আপনার ডেটা কখনই আপনার কম্পিউটার ছেড়ে যায় না, সম্পূর্ণ গোপনীয়তা এবং নিরাপত্তা নিশ্চিত করে।
হ্যাঁ, আপনি 'ফাইল খুলুন' বোতাম ব্যবহার করে JSON ফাইল আপলোড করতে পারেন। টুলটি ফাইলটি পড়বে এবং অবিলম্বে ফর্ম্যাটকৃত আউটপুট প্রদর্শন করবে।
সাধারণ JSON ত্রুটিগুলির মধ্যে রয়েছে: কী-মান জোড়ার মধ্যে অনুপস্থিত কমা, স্ট্রিংগুলির জন্য ডাবল কোটের পরিবর্তে সিঙ্গেল কোট ব্যবহার করা, ট্রেলিং কমা, বন্ধ না হওয়া বন্ধনী বা ব্রেসেস, এবং উদ্ধৃতি ছাড়া কী।
হ্যাঁ, ফর্ম্যাটকৃত JSON আপনার ক্লিপবোর্ডে কপি করতে 'কপি করুন' বোতাম ব্যবহার করুন। এটি পরিষ্কার করা JSON আপনার কোড বা ডকুমেন্টেশনে পেস্ট করার জন্য দরকারী।