JSON কী? উদাহরণসহ সহজ ভাষায় একটি গাইড
JSON (JavaScript Object Notation) হলো কাঠামোবদ্ধ ডেটা লেখার একটি সহজ টেক্সট ফরম্যাট, যেমন একজন গ্রাহক, একটি অর্ডার বা পণ্যের তালিকা, যেখানে নাম ও মান জোড়া জোড়া থাকে। মানুষের পড়তে সহজ, আর প্রোগ্রামের জন্য তৈরি ও পার্স করাও সহজ। অ্যাপ ও সেবাগুলো ওয়েবে ডেটা আদান-প্রদান করলে JSON-ই সবচেয়ে বেশি ব্যবহৃত ফরম্যাট।
AI দিয়ে বানানোর ক্ষেত্রে JSON কেন গুরুত্বপূর্ণ
কোড না লিখলেও আপনি JSON-এর মুখোমুখি হবেন:
- API। আপনার অ্যাপের স্ক্রিন যখন ব্যাকএন্ড থেকে ডেটা আনে, বা আপনার ব্যাকএন্ড যখন পেমেন্ট, ইমেইল বা AI সেবাকে কল করে, তখন ডেটা সাধারণত JSON হিসেবে যাতায়াত করে। দেখুন API কী।
- সেটিংস ফাইল। অনেক প্রজেক্টের কনফিগারেশন ফাইল JSON, যেমন
package.json, যেখানে একটি JavaScript প্রজেক্টের ডিপেন্ডেন্সির তালিকা থাকে। - ডাটাবেস। Postgres একটি কলামে JSON রাখতে পারে (
jsonbটাইপ), যেসব ডেটা নিয়মিত সারি ও কলামে খাপ খায় না তার জন্য। দেখুন Postgres কী। - AI-এর আউটপুট। যখন চান একটি AI মডেল এমন কিছু ফেরত দিক যা একটি প্রোগ্রাম ব্যবহার করতে পারে, যেমন ট্যাগের তালিকা বা ইনভয়েসের ফিল্ড, তখন সাধারণত JSON চান।
- এরর মেসেজ ও লগ। অনেক ত্রুটি JSON হিসেবে আসে, আর কী ভুল হয়েছে তা খুঁজে বের করার দ্রুততম উপায় প্রায়ই তা পড়া।
JSON পড়তে পারলে আপনার অ্যাপ আসলে কী পেয়েছে তা যাচাই করা যায়, কোনো ফিল্ড হারিয়ে গেলে ধরা যায়, এবং AI বিল্ডারকে সমস্যা সুনির্দিষ্টভাবে বোঝানো যায়।
একটি দৈনন্দিন উপমা
একটি কাগজের ফর্মের কথা ভাবুন: নাম: ____, ফোন: ____, নিউজলেটার: ☐ হ্যাঁ ☐ না। প্রতিটি ঘরে একটি লেবেলের পাশে একটি মান থাকে। JSON হলো সেই ফর্মটি একটি কঠোর বিন্যাসে টেক্সট হিসেবে লেখা, যা একটি কম্পিউটার অনুমান না করে পড়তে পারে। ফর্মের মতোই JSON-এ অংশের ভেতরে অংশ (যেমন ঠিকানার ব্লক, যেখানে রাস্তা, শহর ও পোস্টকোড থাকে) এবং তালিকা (যেমন একাধিক ফোন নম্বর) থাকতে পারে।
JSON দেখতে কেমন
একটি বুকিংয়ের JSON এখানে:
{
"id": 5001,
"customer": "Lena Park",
"service": "Haircut",
"startsAt": "2026-10-03T14:00:00Z",
"price": 35.5,
"paid": false,
"notes": null,
"extras": ["beard trim", "hot towel"],
"contact": {
"email": "lena@example.com",
"phone": "+44 20 7946 0000"
}
}
পড়ার নিয়ম:
- কার্লি ব্রেস
{ }একটি object ঘিরে রাখে, অর্থাৎ নাম ও মানের একটি সেট। - প্রতিটি জোড়া
"name": valueআকারে থাকে, কমা দিয়ে আলাদা করা। - স্কোয়ার ব্র্যাকেট
[ ]একটি array ঘিরে রাখে, অর্থাৎ ক্রমবদ্ধ তালিকা। - Object ও array একে অপরের ভেতরে থাকতে পারে, যেমন
contactওextras।
ছয় ধরনের মান
JSON-এ মাত্র ছয় ধরনের মান আছে। এই ছোট তালিকাটিই এটিকে সবখানে কাজ করার একটি বড় কারণ।
| ধরন | উদাহরণ | মন্তব্য |
|---|---|---|
| String (টেক্সট) | "Lena Park" | সবসময় ডাবল কোট |
| Number (সংখ্যা) | 35.5, -2, 1e6 | কোট নেই; মুদ্রার চিহ্ন নেই |
| Boolean | true, false | ছোট হাতের অক্ষরে, কোট ছাড়া |
| Null | null | "কোনো মান নেই" |
| Object | { "city": "Leeds" } | নামযুক্ত মান |
| Array | [1, 2, 3] | ক্রমবদ্ধ তালিকা; আইটেম যেকোনো ধরনের হতে পারে |
JSON-এ আলাদা কোনো তারিখের টাইপ নেই। তারিখ স্ট্রিং হিসেবে লেখা হয়, সাধারণত উপরের ISO 8601 ফরম্যাটে (2026-10-03T14:00:00Z, যেখানে Z মানে UTC)। এই ফরম্যাটে একমত হলে সময়-অঞ্চলের বাগের একটি পুরো শ্রেণি এড়ানো যায়।
কড়া নিয়মাবলি (ত্রুটি কোথা থেকে আসে)
JSON দেখতে যতটা ক্ষমাশীল মনে হয়, আসলে ততটা নয়। এগুলো সবই অবৈধ:
{ name: "Lena" } ← ডাবল কোট ছাড়া key
{ 'name': 'Lena' } ← সিঙ্গেল কোট
{ "a": 1, "b": 2, } ← ট্রেইলিং কমা
{ "a": 1 "b": 2 } ← কমা নেই
{ "a": 1 // comment } ← কমেন্ট অনুমোদিত নয়
আপনি যেসব "Unexpected token" ত্রুটি দেখেন, তার বেশিরভাগই এই কোনো একটি। একটি JSON validator বা formatter সঠিক লাইনটি দেখিয়ে দেবে।
একটি বাস্তব উদাহরণ: একটি অ্যাপের ভেতর দিয়ে JSON
একজন গ্রাহক একটি স্যালন অ্যাপে চুল কাটার সময় বুক করে। এখানে JSON কোথায় আসে:
- বুকিং ফর্ম অ্যাপের ব্যাকএন্ডে এটি পাঠায়:
{ "service": "Haircut", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
- ব্যাকএন্ড বুকিংটি ডাটাবেসে সংরক্ষণ করে এবং স্ট্যাটাস
201 Createdও এই উত্তরটি ফেরত দেয়:
{ "id": 5001, "status": "confirmed" }
- সময়টি আগে থেকেই নেওয়া থাকলে, এটি বরং
409 Conflictস্ট্যাটাস ও এটি ফেরত দিতে পারে:
{ "error": "slot_taken", "message": "That time was just booked. Please pick another." }
পেজটি status বা error পড়ে সঠিক বার্তা দেখায়। পেজে যদি খালি স্ক্রিন আসে, ব্রাউজারের ডেভেলপার টুলস (Network ট্যাব) খুললে এই JSON দেখা যাবে, যা প্রায়ই কী ভুল হয়েছে তার দ্রুততম সূত্র।
মূল শব্দ
| শব্দ | অর্থ |
|---|---|
| Key | একটি নাম-মান জোড়ায় নাম, যেমন "email"। |
| Parse | JSON টেক্সটকে একটি প্রোগ্রামের ব্যবহারযোগ্য ডেটায় রূপান্তর করা। |
| Serialize / stringify | ডেটাকে পাঠানো বা সংরক্ষণের জন্য JSON টেক্সটে রূপান্তর করা। |
| Payload | কোনো অনুরোধ বা উত্তরে পাঠানো ডেটা। |
| Schema | ডেটার কাঠামোর বিবরণ, কোন ফিল্ড থাকবে ও কোন ধরনের হবে। JSON Schema এর একটি স্ট্যান্ডার্ড উপায়। |
| JSONB | Postgres-এর বাইনারি JSON কলাম টাইপ, যা ইনডেক্স ও কোয়েরি করা যায়। |
| NDJSON / JSON Lines | প্রতি লাইনে একটি JSON object, লগ ও স্ট্রিমিংয়ে সাধারণ। |
সাধারণ ভুল ধারণা
- "JSON মানে JavaScript।" এর সিনট্যাক্স JavaScript থেকে এসেছে, কিন্তু এটি ভাষা-নিরপেক্ষ; Python, Java, C#, Go ও বাকি সবাই এটি পড়ে।
- "কোটের ভেতরের সংখ্যা ঠিক আছে।"
"35"একটি স্ট্রিং, সংখ্যা নয়। এদের মেশালে বাগ হয়, যেমন"35" + "5"হয়ে যায়"355"। টাকা প্রায়ই পূর্ণ সেন্ট হিসেবে (3550) রাখা ভালো, যাতে রাউন্ডিংয়ের সমস্যা না হয়। - "JSON নিরাপদ, কারণ এটি শুধু ডেটা।" JSON যেকোনো কিছু বহন করতে পারে, সিক্রেটসহ। ব্রাউজারে পাঠানো JSON-এ API কী রাখবেন না।
- "সবকিছু একটি JSON কলামে রাখো।" নমনীয় অতিরিক্ত ডেটার জন্য সুবিধাজনক, কিন্তু যে ডেটা আপনি খোঁজেন, ফিল্টার করেন বা জোড়া লাগান, তা সাধারণত সঠিক কলামে থাকা উচিত।
- "AI সবসময় বৈধ JSON ফেরত দেয়।" মডেল বাড়তি লেখা যোগ করতে পারে বা ফরম্যাট ভাঙতে পারে। অনেক প্রোভাইডার একটি structured-output মোড দেয়; তবুও আপনার কোড ফেরত আসা ডেটা যাচাই করবে।
AI বিল্ডারকে কী চাইবেন
- "এই endpoint কোন JSON ফেরত দেয় তার একটি উদাহরণ দেখাও।"
- "ত্রুটি একটি
errorকোড ও মানুষের পড়ার মতোmessageসহ JSON হিসেবে ফেরত দাও।" - "তারিখ UTC-তে ISO 8601 স্ট্রিং হিসেবে সংরক্ষণ করো এবং শুধু স্ক্রিনে স্থানীয় সময়ে রূপান্তর করো।"
- "দাম পূর্ণসংখ্যা সেন্ট হিসেবে সংরক্ষণ করো।"
- "সার্ভারে আসা JSON যাচাই করো এবং ফিল্ড না থাকলে বা ভুল টাইপ হলে অনুরোধ ফিরিয়ে দাও।"
- "AI মডেল কল করার সময় এই সুনির্দিষ্ট আকারে JSON চাও এবং ব্যবহারের আগে যাচাই করো।"
Mythex-এ JSON
Mythex-এ আপনাকে হাতে JSON লিখতে হয় না। আপনি যা চান তা বর্ণনা করেন, আর এজেন্ট সেই কোড লেখে যা পাঠায় ও পড়ে। তবু এটি চিনতে পারা কাজে লাগে: কিছু ভাঙলে JSON ত্রুটি চ্যাটে পেস্ট করলে এজেন্ট একটি সুনির্দিষ্ট সূত্র পায়। ডকসের REST API ব্যাকএন্ড রেসিপি শুরু থেকেই "স্পষ্ট JSON ত্রুটি" চায়, আর যেকোনো API ইন্টিগ্রেট করা রেসিপি বাইরের সেবা কল করা নিয়ে কথা বলে। বৃহত্তর চিত্রের জন্য দেখুন REST বনাম GraphQL এবং AI দিয়ে বানানো অ্যাপের ত্রুটি কীভাবে খুঁজবেন।
প্রশ্নোত্তর
সহজ কথায় JSON কী?
JSON (JavaScript Object Notation) হলো কাঠামোবদ্ধ ডেটা নাম ও মান হিসেবে লেখার একটি সাধারণ টেক্সট ফরম্যাট, যেমন "name": "Lena"। প্রায় প্রতিটি ওয়েব API ডেটা আদান-প্রদানের জন্য এটি ব্যবহার করে, আর অনেক অ্যাপ সেটিংস ও সংরক্ষিত ডেটার জন্যও ব্যবহার করে।
JSON কি একটি প্রোগ্রামিং ভাষা?
না। JSON হলো একটি ডেটা ফরম্যাট, ভাষা নয়। এটি নিজে কিছু করতে পারে না, শুধু ডেটার বর্ণনা দেয়। যদিও এটি JavaScript থেকে এসেছে, প্রায় প্রতিটি প্রোগ্রামিং ভাষা এটি পড়তে ও লিখতে পারে।
JSON ও JavaScript object-এর পার্থক্য কী?
এরা দেখতে একই রকম, তবে JSON বেশি কড়াকড়ি। JSON-এ প্রতিটি key অবশ্যই ডাবল কোটেশনে থাকতে হবে, স্ট্রিং ডাবল কোট ব্যবহার করে, কোনো কমেন্ট থাকে না, শেষে কমা থাকে না, এবং মান শুধু string, number, true, false, null, object ও array হতে পারে।
আমার JSON কেন invalid বলছে?
সাধারণ কারণ হলো শেষ আইটেমের পরে ট্রেইলিং কমা, ডাবল কোটের বদলে সিঙ্গেল কোট, আইটেমের মাঝে কমা না থাকা, অসমাপ্ত ব্র্যাকেট, বা একটি কমেন্ট। এটি একটি JSON validator-এ পেস্ট করলে লাইনটি দেখিয়ে দেবে।