JSON বনাম JSON5 বনাম JSONC
সংক্ষেপে: ক্রমে কঠোর সুপারসেট: JSONC কমেন্ট যোগ করে; JSON5 সিঙ্গেল কোট, আনকোয়োটেড কি, ট্রেইলিং কমা ও হেক্স সংখ্যা যোগ করে। ভুল বাছাই API ভাঙে, আপনার এডিটর নয়।

মূল কথা: ডেটা সিস্টেম সীমানা পার হলে সবসময় স্ট্যান্ডার্ড JSON, আর কেবল মানুষ সম্পাদনা করে এমন লোকাল কনফিগে JSONC; সিঙ্গেল কোট, ট্রেইলিং কমা বা আনকোয়োটেড কি দরকার হলে JSON5-এর দিকে যান, কিন্তু আগে নিশ্চিত করুন লোডার তা সমর্থন করে।
এক লাইনে: JSONC হলো JSON প্লাস কমেন্ট; JSON5 হলো JSON প্লাস JavaScript অভ্যাস।
বৈশিষ্ট্য ম্যাট্রিক্স
| বৈশিষ্ট্য | JSON | JSONC | JSON5 |
|---|---|---|---|
| ডাবল-কোটেড স্ট্রিং | ✅ | ✅ | ✅ |
| সিঙ্গেল-কোটেড স্ট্রিং | ❌ | ❌ | ✅ |
| আনকোয়োটেড কি | ❌ | ❌ | ✅ |
// লাইন কমেন্ট |
❌ | ✅ | ✅ |
/* */ ব্লক কমেন্ট |
❌ | ✅ | ✅ |
| ট্রেইলিং কমা | ❌ | ❌ | ✅ |
হেক্স সংখ্যা 0xFF |
❌ | ❌ | ✅ |
Infinity / NaN |
❌ | ❌ | ✅ |
| মাল্টি-লাইন স্ট্রিং | ❌ | ❌ | ✅ |
| স্ট্যান্ডার্ড পার্সার দিয়ে পাঠযোগ্য | ✅ | ❌ | ❌ |
লক্ষ্য করুন JSONC কেবল কমেন্ট সমাধান করে। অনেকে ধরে নেন "কমেন্ট অনুমোদনকারী JSON" ট্রেইলিং কমাও অনুমোদন করে; tsconfig.json তবু একটিতে ব্যর্থ হয়।
কোনটি কীসের জন্য
JSON — বিনিময়। API, কিউ, ডেটাবেস JSON কলাম, লগ। মেশিন-থেকে-মেশিন যেকোনো কিছু।
JSONC — এডিটর কনফিগারেশন। VS Code এই ফাইলগুলো নিজেই পার্স করে, তাই JSON.parse সেগুলো কখনো দেখে না। কোনো RFC নেই; এটি Microsoft-নেতৃত্বাধীন বাস্তব প্রথা।
JSON5 — মানুষের জন্য শিথিল সুপারসেট। লক্ষ্য ছিল "এমন কনফিগ যা JavaScript অবজেক্ট লিটেরালের মতো দেখায়"। বিল্ড টুলে লোড করা .json5 ফাইলে সবচেয়ে উপযুক্ত; সবচেয়ে বিস্তৃত সিনট্যাক্স আর সবচেয়ে সংকীর্ণ টুল সমর্থন।
বাছাই
| পরিস্থিতি | বাছুন |
|---|---|
| রিকোয়েস্ট বা রেসপন্স বডি | JSON, বিকল্প নেই |
| MySQL / PostgreSQL-এর JSON কলাম | JSON, তাদের ফাংশন অন্য কিছু গ্রহণ করে না |
| ব্যাখ্যা দরকারি প্রকল্প কনফিগ | সমর্থিত হলে JSONC, নাহলে YAML |
| JS-শৈলীর শিথিলতা চান | JSON5, লোডার সমর্থন করে নিশ্চিত করার পর |
| নন-ইঞ্জিনিয়ার সম্পাদনা করবে | YAML, ইনডেন্টেশন ব্রেসকে হারায় |
একটি সহজ ফাঁদ
JSONC ফাইল কঠোর JSON হিসেবে পার্স করলে এরর কমেন্টে ইশারা করে:
SyntaxError: Unexpected token / in JSON at position 42
কমেন্ট মোছার আগে দেখুন ফাইলটি JSONC হওয়ার কথা কি না। মুছে দিলে দুই লাইন পরে ট্রেইলিং কমায় তবু ঠেকতে পারেন।
সাধারণ প্রশ্ন
JSONC ও JSON5-এর মধ্যে কীভাবে বাছাই করব?
কমেন্টই একমাত্র প্রয়োজন হলে JSONC ব্যবহার করুন: এটি JSON-এর উপরে // ও /* */ যোগ করে, আর VS Code-এর settings.json ও tsconfig.json এটি ব্যবহার করে। সিঙ্গেল কোট, আনকোয়োটেড কি, ট্রেইলিং কমা, হেক্স সংখ্যা বা মাল্টি-লাইন স্ট্রিংও চাইলে JSON5। দুইটিই লোডারের উপর নির্ভর করে, তাই ফাইল পড়া টুল সমর্থন করে নিশ্চিত করুন।
JSONC ফাইল স্ট্যান্ডার্ড JSON হিসেবে পড়া যায় না কেন?
JSONC বাস্তব প্রথা, আলাদা RFC নয়, তাই স্ট্যান্ডার্ড পার্সার কমেন্ট প্রত্যাখ্যান করে। এমন ফাইলে JSON.parse Unexpected token / দেয়, ডেটার বদলে কমেন্টে ইশারা করে। কেবল এডিটর বা নিবেদিত পার্সার পড়ে এমন কনফিগারেশন JSONC হিসেবে লেখা উচিত।
API-তে JSON5 ফাইল পাঠানো উচিত?
না। API, ডেটাবেস JSON কলাম ও কিউ কঠোর JSON পার্স করে, তাই JSON5-এর সিঙ্গেল কোট, আনকোয়োটেড কি ও ট্রেইলিং কমা প্রত্যাখ্যাত হয়। JSON5 মানুষ সম্পাদনা করে এমন লোকাল কনফিগারেশনের জন্য; সিস্টেম সীমানা পার হওয়ার আগে স্ট্যান্ডার্ড JSON-এ রূপান্তর করুন।