JSON ডেটা (.json)
RFC স্ট্যান্ডার্ডJavaScript Object Notation (JSON) হলো ডেটা বিনিময়ের জন্য একটি হালকা, মানুষের পড়ার উপযোগী টেক্সট ফরম্যাট, যা সম্পূর্ণ ভাষা-নিরপেক্ষ এবং ওয়েব এপিআই-এর জন্য সার্বজনীনভাবে ব্যবহৃত হয়।
JSON থেকে HTML-তে রূপান্তর করুন
বিনামূল্যের ব্রাউজারভিত্তিক JSON-থেকে-HTML রূপান্তরকারী। আপনার ডিভাইসেই ফাইল তাৎক্ষণিকভাবে রূপান্তর করুন।
অনলাইনে JSON কম্প্রেস করুন
ব্যক্তিগত - ফাইল কখনোই আপনার ডিভাইস ছেড়ে যায় না
ইনস্পেক্ট ও মেটাডেটা
অপারেটিং সিস্টেম এবং ফাইল অ্যানালাইজারগুলো শুরুর বাইনারি বাইট সিকোয়েন্স পরীক্ষা করে JSON ফাইল শনাক্ত করে:
বাইট-লেভেল হেডার সিগনেচার (ম্যাজিক বাইটস)
অপারেটিং সিস্টেম এবং ফাইল অ্যানালাইজারগুলো শুরুর বাইনারি বাইট সিকোয়েন্স পরীক্ষা করে JSON ফাইল শনাক্ত করে:
হেক্স সিগনেচার (অফসেট 0):
7B or 5BASCII রিপ্রেজেন্টেশন: { or [
স্ট্যান্ডার্ডাইজেশন: RFC 8259 / ECMA-404 / ISO/IEC 21778
প্রযুক্তিগত বৈশিষ্ট্য
| কন্টেইনার আর্কিটেকচার | হালকা, টেক্সট-ভিত্তিক, ভাষা-নিরপেক্ষ ডেটা বিনিময় ফরম্যাট |
| কম্প্রেশন | Gzip / Brotli / Zstandard টেক্সট কম্প্রেশন (সাধারণত ৮০%-৯০% অনুপাত অর্জন করে) |
| বাইট এন্ডিয়াননেস | UTF-8 এনকোডেড ইউনিকোড (বাইট অর্ডার মার্ক / BOM সুপারিশ করা হয় না) |
| কালার স্পেস | প্রযোজ্য নয় |
| চ্যানেল ও কাঠামো | ছয়টি মৌলিক ডেটা প্রকার: অবজেক্ট, অ্যারে, স্ট্রিং, নম্বর, বুলিয়ান, নাল |
| সর্বোচ্চ মাত্রা | অসীম; শুধুমাত্র পার্সার মেমরি এবং সর্বোচ্চ স্ট্রিং দৈর্ঘ্যের দ্বারা সীমাবদ্ধ |
| স্বচ্ছতা | প্রযোজ্য নয় |
| স্ট্রিমিং ও প্রোগ্রেসিভ | NDJSON (নিউলাইন ডিলিমিটেড JSON) / JSON লাইন প্রগতিশীল স্ট্রিম প্রক্রিয়াকরণ সক্ষম করে |
টেকনিক্যাল তুলনা ম্যাট্রিক্স: JSON বনাম প্রতিযোগীগণ
| প্রযুক্তিগত বৈশিষ্ট্য | JSON (বর্তমান) | YAML | XML | Protocol Buffers |
|---|---|---|---|---|
| সিনট্যাক্স জটিলতা | ন্যূনতম (৬ প্রকার, কঠোর সিনট্যাক্স) | উচ্চ (ইনেন্টেশন-ভিত্তিক, জটিল স্পেসিফিকেশন) | উচ্চ (ভার্বোজ ক্লোজিং ট্যাগ, নেমস্পেস) | স্কিমা-সংজ্ঞায়িত বাইনারি ওয়্যার ফরম্যাট |
| পার্সিং কর্মক্ষমতা | সমস্ত আধুনিক ভাষায় অত্যন্ত দ্রুত | ধীর (জটিল ইনেন্টেশন পার্সিং) | মাঝারি থেকে ধীর (ভারী DOM নির্মাণ) | অতি-দ্রুত (জিরো-কপি বাইনারি ডেসিরিয়ালাইজেশন) |
| কমেন্ট সমর্থিত | না (মেটাডেটা বৃদ্ধি রোধ করতে উদ্দেশ্যমূলকভাবে বাদ দেওয়া হয়েছে) | হ্যাঁ (# কমেন্ট) | হ্যাঁ (<!-- কমেন্ট -->) | .proto ফাইলে হ্যাঁ |
| নেটওয়ার্ক পেলোড আকার | কমপ্যাক্ট টেক্সট (খুব উচ্চ gzip অনুপাত) | কমপ্যাক্ট টেক্সট | ভার্বোজ টেক্সট (ভারী ট্যাগ পুনরাবৃত্তি) | অতি-কমপ্যাক্ট বাইনারি |
সাধারণ করাপশন মোড এবং হেক্স রিকভারি গাইড
SyntaxError: JSON-এর X অবস্থানে অপ্রত্যাশিত token ,
মূল কারণ: একটি অ্যারে বা অবজেক্টের শেষ আইটেমের পরে ট্রেইলিং কমা, যা RFC 8259 JSON-এ কঠোরভাবে অবৈধ।
পুনরুদ্ধার: JSON.parse()-এ পাস করার আগে অবজেক্টের চাবি এবং অ্যারে এন্ট্রি থেকে ট্রেইলিং কমা সরিয়ে ফেলুন।
SyntaxError: JSON-এ অপ্রত্যাশিত token '
মূল কারণ: ডবল কোট (" ") এর পরিবর্তে সিঙ্গেল কোটে ('') ঘেরা স্ট্রিং বা চাবি।
পুনরুদ্ধার: সমস্ত সিঙ্গেল-কোটেড স্ট্রিং এবং চাবি স্ট্যান্ডার্ড ডবল-কোটেড স্ট্রিং দিয়ে প্রতিস্থাপন করুন।
নিরাপত্তা বিশ্লেষণ ও পার্সার অ্যাটাক ভেক্টর
JSON শুধু টেক্সট হওয়ায় সরাসরি কোড চালায় না, তবে অবিশ্বস্ত JSON পার্স করলে Prototype Pollution, ReDoS বা মেমরি নিঃশেষ হওয়ার ঝুঁকি থাকে।
পরিচিত অ্যাটাক ভেক্টর
- প্রোটোটাইপ পলিউশন: '__proto__' বা 'constructor' নামক চাবি জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনে Object.prototype পরিবর্তন করছে।
- গভীরভাবে নেস্টেড JSON কাঠামোর মাধ্যমে স্ট্যাক ওভারফ্লো পরিষেবা অস্বীকারের আক্রমণ (যেমন ১০,০০০ খোলার বন্ধনী)।
- সংখ্যার নির্ভুলতা হ্রাস: ২^৫৩ - ১ (৯,০০৭,১৯৯,২৫৪,৭৪০,৯৯১) এর চেয়ে বড় জাভাস্ক্রিপ্ট সংখ্যা নীরবে নির্ভুলতা হারায়।
প্রতিরক্ষামূলক সেরা অনুশীলন: কখনও eval() দিয়ে JSON মূল্যায়ন করবেন না। পুনরাবৃত্ত অবজেক্ট মার্জ ফাংশনে JSON.parse() ব্যবহার করুন এবং '__proto__' প্রপার্টি স্যানিটাইজ করুন।
ঐতিহাসিক উৎপত্তি ও মাইলফলক
প্রধান সুবিধাসমূহ ও গুণাবলী
- মানুষের পড়ার উপযোগী, স্ব-বর্ণনামূলক এবং সংক্ষিপ্ত টেক্সট গঠন।
- জাভাস্ক্রিপ্ট ইঞ্জিন (JSON.parse) এবং প্রতিটি প্রধান প্রোগ্রামিং ভাষার মধ্যে নেটিভ পার্সিং সমর্থন তৈরি করা হয়েছে।
- কঠোর স্পেসিফিকেশন যেকোনো কোড এক্সিকিউশন প্রতিরোধ করে।
কারিগরি সীমাবদ্ধতা ও অসুবিধা
- কমেন্ট, ট্রেইলিং কমা বা সার্কুলার অবজেক্ট রেফারেন্সের জন্য কোনো সমর্থন নেই।
- কোনো নেটিভ বাইনারি প্রকার নেই (বাইনারি ডেটা অবশ্যই base64-এনকোডেড হতে হবে, যা আকার ৩৩% বাড়ায়)।
- প্রোটোকল বাফার বা মেসেজপ্যাকের মতো বাইনারি ফরম্যাটের তুলনায় অদক্ষ সিরিয়ালাইজেশন।
আকর্ষণীয় কারিগরি তথ্য
- ডাগলাস ক্রকফোর্ড মূল JSMin JSON টুলগুলিতে 'সফটওয়্যারটি ভালোর জন্য ব্যবহার করা হবে, মন্দের জন্য নয়' সফ্টওয়্যার লাইসেন্স ধারা যুক্ত করেছিলেন।
- JSON হলো জাভাস্ক্রিপ্ট সিনট্যাক্সের একটি কঠোর সাবসেট, কিন্তু ES2019 পর্যন্ত, কাঁচা আনস্কেপড U+2028 এবং U+2029 অক্ষরগুলি JSON-এ বৈধ ছিল কিন্তু জাভাস্ক্রিপ্ট স্ট্রিংয়ে অবৈধ ছিল।
- ডাগলাস ক্রকফোর্ড আবিষ্কার করেছেন যে ECMAScript 5-এ ডেডিকেটেড JSON.parse() এপিআই স্ট্যান্ডার্ডাইজ হওয়ার আগে প্রাথমিক ওয়েব ব্রাউজারগুলি জাভাস্ক্রিপ্টের নেটিভ eval() ব্যবহার করে সরাসরি অবজেক্টে JSON মূল্যায়ন করতে পারত।
সচরাচর জিজ্ঞাসিত প্রযুক্তিগত প্রশ্নাবলি
JSON কেন কমেন্টের অনুমতি দেয় না?
JSON-এর ব্যাকরণে মন্তব্য নেই। এক্সটেনশন ও অ্যাপ্লিকেশনভিত্তিক ডেটা ব্যবহারে বিভিন্ন বাস্তবায়নের আচরণ আলাদা হতে পারে, তাই শুধু ফরম্যাটটি আন্তঃকার্যক্ষমতার নিশ্চয়তা দেয় না।
নির্ভুলতা না হারিয়ে JSON-এ কীভাবে ৬৪-বিট পূর্ণসংখ্যা সংরক্ষণ করবেন?
জাভাস্ক্রিপ্টের নেটিভ নম্বর প্রকার হলো একটি IEEE 754 ডবল-প্রিসিশন ফ্লোট, যা শুধুমাত্র ২^৫৩ - ১ পর্যন্ত পূর্ণসংখ্যা নির্ভুলভাবে সমর্থন করে। ৬৪-বিট পূর্ণসংখ্যা (যেমন ডেটাবেস আইডি বা টাইমস্ট্যাম্প) JSON-এ স্ট্রিং হিসাবে সিরিয়ালাইজ করতে হবে (যেমন '1234567890123456789')।
JSON এবং NDJSON / JSON লাইনের মধ্যে পার্থক্য কী?
স্ট্যান্ডার্ড JSON-এ একটি সম্পূর্ণ পেলোড একটি একক মূল অবজেক্ট বা অ্যারেতে মোড়ানো হয়, যার ফলে মূল্যায়ন করার আগে পার্সারদের পুরো টেক্সট লোড করতে হয়। NDJSON (নিউলাইন ডিলিমিটেড JSON) নিউলাইন ক্যারেক্টার (\n) দিয়ে পৃথক পৃথক বৈধ JSON রেকর্ড আলাদা করে, বিশাল মাল্টি-গিগাবাইট ডেটাসেটের মেমরি-দক্ষ লাইন-বাই-লাইন স্ট্রিম করার অনুমতি দেয়।
সম্পর্কিত JSON কনভার্সন পেয়ার
JSON ডেটাকে এইচটিএমএল সোর্সে রূপান্তর করার মাধ্যমে কাঁচা কাঠামোগত কি-ভ্যালু জোড়গুলোকে ব্রাউজারে রেন্ডার করার উপযোগী পাঠযোগ্য ওয়েব নথিতে পরিণত করা যায়।
এইচটিএমএল সোর্সকে JSON ডেটায় রূপান্তর করার মাধ্যমে পঠযোগ্য ওয়েব নথিপত্রকে প্রোগ্রাম্যাটিক প্রসেসিং এবং এপিআই ইনজেশনের জন্য কাঠামোগত কি-ভ্যালু জোড়ায় পরিণত করা যায়।
একটি SQL ডাম্প টেক্সট স্ক্রিপ্টকে JSON ডেটা এক্সপোর্টে রূপান্তর করার মাধ্যমে আধুনিক ওয়েব অ্যাপ্লিকেশনের জন্য অনমনীয় রিলেশনাল ডেটাবেস টেবিলগুলোকে নমনীয়, নেস্টেড অবজেক্টে পরিণত করা যায়।
অগঠিত JSON টেক্সট ফাইলকে স্ট্রাকচার্ড SQLite রিলেশনাল ডেটাবেসে রূপান্তর করার ফলে বড় ডেটা রেকর্ডের দ্রুত ইনডেক্সিং এবং কুয়েরি করা সম্ভব হয়।
Adobe Swatch Exchange ফাইলগুলোকে কালার JSON স্ট্রাকচারে রূপান্তর করার মাধ্যমে বাইনারি ডিজাইন প্যালেটগুলোকে আধুনিক ওয়েব অ্যাপ্লিকেশনের জন্য পঠনযোগ্য টেক্সট অবজেক্টে রূপান্তর করা হয়।
কালার JSON টেক্সট ডেটাকে Adobe ASE বাইনারি সোয়াচে রূপান্তর করার মাধ্যমে ওয়েব-ভিত্তিক ডিজাইন টোকেন এবং পেশাদার ডেস্কটপ লেআউট অ্যাপ্লিকেশনের মধ্যে সেতুবন্ধন তৈরি হয়।
GIMP প্যালেট টেক্সট ফাইলগুলোকে কালার JSON কাঠামোতে রূপান্তর করার ফলে ওয়েব অ্যাপ্লিকেশনগুলো কোনো জটিল পার্সিং স্ক্রিপ্ট ছাড়াই সরাসরি রঙের সোয়াচ পড়তে পারে।
কাঠামোগত কালার JSON ফাইলগুলোকে CSS ভ্যারিয়েবলে রূপান্তর করা কাঁচা ডাটা অবজেক্টগুলোকে ওয়েবসাইটগুলোর জন্য নেটিভ স্টাইলিং বৈশিষ্ট্যে রূপান্তরিত করে।