Tech Help
সাধারণ JSON ত্রুটি: ট্রেলিং কমা, উদ্ধৃতি এবং Unexpected token
অবৈধ JSON ঠিক করুন: ট্রেলিং কমা, একক উদ্ধৃতি, উদ্ধৃতিহীন কী, এবং Unexpected token। দেখুন JSON.parse কেন ব্যর্থ হয় এবং JSON কীভাবে যাচাই করবেন।
অধিকাংশ JSON ত্রুটি কঠোর সিনট্যাক্স থেকে আসে: ট্রেলিং কমা, একক উদ্ধৃতি, উদ্ধৃতিহীন প্রপার্টি নাম, অনুপস্থিত কমা, অমিল বন্ধনী, ভুল এস্কেপ, বা মন্তব্য।
JSON JavaScript অবজেক্টের মতো দেখায়, কিন্তু আরও কঠোর। প্রপার্টি নাম ও স্ট্রিংয়ে দ্বৈত উদ্ধৃতি লাগে।
Unexpected token দেখলে, রিপোর্ট করা অক্ষরটি পার্স থামার জায়গা হতে পারে—মূল ভুল যেখানে শুরু হয়েছিল তা নয় সবসময়।
আপনার JSON অবৈধ চিহ্নিত। সাধারণত ছোট সিনট্যাক্স সমস্যা, ভাঙা ফাইল ফর্ম্যাট নয়। নিচের সাতটি ভুল অধিকাংশ Unexpected token ঘটায়।
JSON এত সহজে ভাঙে কেন?
JSON কঠোর সিনট্যাক্সের ডেটা ফর্ম্যাট। JavaScript অবজেক্ট লিটারাল মিলতে দেখালেও অবৈধ JSON হতে পারে। মানক JSON-এ প্রপার্টি নাম ও স্ট্রিংয়ে দ্বৈত উদ্ধৃতি লাগে, ট্রেলিং কমা অনুমোদিত নয়, এবং মন্তব্য ফর্ম্যাটের অংশ নয়।
1. ট্রেলিং কমা
শেষ প্রপার্টির পর অতিরিক্ত কমাই সমস্যা। মানক JSON এটি অনুমোদন করে না।
অবৈধ
{
"name": "Alex",
"age": 30,
}
বৈধ
{
"name": "Alex",
"age": 30
}
একই নিয়ম অ্যারেতেও। শেষ আইটেমের পর কমা বাদ দিন।
অবৈধ
[
"red",
"green",
]
বৈধ
[
"red",
"green"
]
2. দ্বৈতের বদলে একক উদ্ধৃতি
JavaScript প্রায়ই একক উদ্ধৃতি গ্রহণ করে। JSON করে না। প্রপার্টি নাম ও স্ট্রিং মান উভয়ে দ্বৈত উদ্ধৃতি ব্যবহার করুন।
অবৈধ
{
'name': 'Alex'
}
বৈধ
{
"name": "Alex"
}
3. উদ্ধৃতিহীন প্রপার্টি নাম
JavaScript-এ কখনো name উদ্ধৃতি ছাড়া লেখা যায়। JSON-এ প্রতিটি প্রপার্টি নাম দ্বৈত-উদ্ধৃতি স্ট্রিং হতে হবে।
অবৈধ
{
name: "Alex",
age: 30
}
বৈধ
{
"name": "Alex",
"age": 30
}
4. মানগুলোর মধ্যে অনুপস্থিত কমা
প্রপার্টি ও অ্যারে আইটেমের মধ্যে কমা লাগে। পার্সার পরের উদ্ধৃতি বা ব্রেসে Unexpected token জানাতে পারে, অনুপস্থিত কমাতে নয়।
অবৈধ
{
"name": "Alex"
"age": 30
}
বৈধ
{
"name": "Alex",
"age": 30
}
5. কম বা বেশি ব্র্যাকেট ও ব্রেস
অবজেক্ট { } ব্যবহার করে। অ্যারে [ ]। নেস্টেড JSON প্রায়ই ব্যর্থ হয় যখন ] থাকে না, } বাড়তি থাকে, বা দুটো অদলবদল হয়। খোলা ও বন্ধ জোড়া গণনা করুন।
অবৈধ
{
"items": [1, 2
}
বৈধ
{
"items": [1, 2]
}
6. অবৈধ এস্কেপ ক্রম
JSON স্ট্রিংয়ে ব্যাকস্ল্যাশ এস্কেপ শুরু করে। " , \ এবং \n-এর মতো ক্রম বৈধ। C:\Users লেখা Windows পাথ নয়: \U বৈধ JSON এস্কেপ নয়। ব্যাকস্ল্যাশ দ্বিগুণ করুন, নইলে পার্সার সেই অক্ষরে থামে।
অবৈধ
{"file":"C:\Users\Alex"}
বৈধ
{"file":"C:\\Users\\Alex"}
7. JSON-এর ভিতরে মন্তব্য
মানক JSON-এ মন্তব্য নেই। কিছু কনফিগ টুল // বা /* */ গ্রহণ করে (JSONC, JSON5 ইত্যাদি)। তা মানক JSON নয়, এবং JSON.parse প্রত্যাখ্যান করবে।
অবৈধ
{
// user name
"name": "Alex"
}
Unexpected token অর্থ কী?
পার্সার সেই অবস্থানে অনুমোদিত নয় এমন অক্ষর পেয়েছে। রিপোর্ট করা স্থান পড়া থামার জায়গা। আগে কমা বাদ দিলে ত্রুটি পরের প্রপার্টির উদ্ধৃতিতে নির্দেশ করতে পারে। শব্দচয়ন রানটাইম অনুসারে বদলায়; প্রতিটি ব্রাউজার একই বাক্য ছাপবে বলে আশা করবেন না।
Unexpected end of JSON input অর্থ কী?
মান সম্পূর্ণ হওয়ার আগে পাঠ শেষ। সাধারণ কারণ: অনুপস্থিত } বা ], কাটা ইনপুট, খালি বডি, বা কাটা API প্রতিক্রিয়া। এটি একটিমাত্র বাগ নয়।
JSON.parse() ব্যর্থ হয় কেন?
JSON.parse() কেবল বৈধ JSON পাঠ গ্রহণ করে। এটি সফল:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
এটি ব্যর্থ, কারণ একক উদ্ধৃতি JSON নয়:
const text = "{'name':'Alex'}";
JSON.parse(text);
সঠিক ত্রুটি বার্তা JavaScript রানটাইমের উপর নির্ভর করে। বার্তাকে ইঙ্গিত ধরুন, তারপর সেই অবস্থানের কাছে কমা, উদ্ধৃতি ও বন্ধনী দেখুন।
JavaScript অবজেক্ট লিটারাল { name: 'Alex' }-এর মতো দেখাতে পারে। বৈধ JSON { "name": "Alex" }-এর মতো হতে হবে: দ্বৈত-উদ্ধৃতি নাম ও স্ট্রিং, ট্রেলিং কমা নেই, মন্তব্য নেই।
- JSON পাঠ
- পার্সার টোকেন পড়ে
- বৈধ ডেটা বা Unexpected token
JSON ত্রুটি দ্রুত কীভাবে খুঁজবেন
এই ক্রমে কাজ করুন। পুরো ফাইল আবার লিখে শুরু করবেন না।
- JSON একটি যাচাইকারীর মধ্য দিয়ে চালান।
- প্রথম রিপোর্ট করা ত্রুটি পড়ুন।
- রিপোর্ট করা অবস্থানের একটু আগে দেখুন।
- কমা পরীক্ষা করুন, বিশেষ করে ট্রেলিং ও অনুপস্থিত।
- উদ্ধৃতি পরীক্ষা করুন: শুধু দ্বৈত উদ্ধৃতি।
- { } এবং [ ] মিলান।
- স্ট্রিংয়ে ব্যাকস্ল্যাশ এস্কেপ পরীক্ষা করুন।
- কঠোর JSON চাইলে মন্তব্য সরান।
সাধারণ সমাধানের দ্রুত মানচিত্র:
| সমস্যা | সমাধান |
|---|---|
| ট্রেলিং কমা | শেষ আইটেমের পর কমা মুছুন। |
| একক উদ্ধৃতি | নাম ও স্ট্রিংয়ে দ্বৈত উদ্ধৃতি ব্যবহার করুন। |
| উদ্ধৃতিহীন কী | প্রপার্টি নাম দ্বৈত উদ্ধৃতিতে মুড়ুন। |
| অনুপস্থিত কমা | প্রপার্টি বা অ্যারে আইটেমের মধ্যে কমা দিন। |
| অনুপস্থিত বন্ধনী | প্রতিটি { } এবং [ ] জোড়া বন্ধ করুন। |
| অবৈধ এস্কেপ | বৈধ এস্কেপ ব্যবহার করুন, বা পাথে ব্যাকস্ল্যাশ দ্বিগুণ করুন। |
| মন্তব্য | মানক JSON-এর জন্য // এবং /* */ সরান। |
ব্রাউজারে JSON যাচাই ও ফর্ম্যাট করুন
NEXNARA JSON ফরম্যাটার ও তুলনা এই ডিভাইসে JSON পরীক্ষা করতে পারে।
আপনি যাচাই করতে পারেন, ২ স্পেস, ৪ স্পেস বা ট্যাব দিয়ে সুন্দর করতে পারেন, minify, দুই নথি তুলনা (JSON Diff), এবং .json ফাইল খুলতে পারেন। পার্স ব্রাউজারে JSON.parse ব্যবহার করে, eval নয়।
৫ MB-এর বড় নথি ধীর লাগতে পারে। ১৫ MB-এর বড় পাঠ ব্রাউজারে প্রক্রিয়া হয় না, যাতে পৃষ্ঠা সাড়া দেয়।
JSON প্রক্রিয়াকরণ নিজে আপনার ব্রাউজারে হয়। এই টুলের জন্য পাঠ NEXNARA সার্ভারে পাঠানো হয় না। বিজ্ঞাপন ও অন্য সাইট বৈশিষ্ট্য এখনও নেটওয়ার্ক ব্যবহার করে; তা প্রক্রিয়াকরণ থেকে আলাদা।
অবৈধ JSON পরীক্ষা করতে হবে? JSON ফরম্যাটার ও তুলনা খুলুন এবং পাঠ আটকান।
FAQ
আমার JSON Unexpected token বলে কেন?
পার্সার সেখানে অনুমোদিত নয় এমন অক্ষর পেয়েছে। আসল ভুল—প্রায়ই অনুপস্থিত কমা বা একক উদ্ধৃতি—সেই অবস্থানের ঠিক আগে থাকতে পারে।
JSON-এ ট্রেলিং কমা অনুমোদিত?
না। মানক JSON শেষ প্রপার্টি বা অ্যারে আইটেমের পর কমা অনুমোদন করে না। JavaScript অবজেক্ট লিটারাল প্রায়ই করে।
JSON একক উদ্ধৃতি ব্যবহার করতে পারে?
না। প্রপার্টি নাম ও স্ট্রিং দ্বৈত উদ্ধৃতি ব্যবহার করুক।
JSON-এ মন্তব্য থাকতে পারে?
মানক JSON-এ না। কিছু টুল মন্তব্যসহ JSONC বা JSON5 গ্রহণ করে; JSON.parse তবু প্রত্যাখ্যান করবে।
JSON.parse() ব্যর্থ হয় কেন?
স্ট্রিং বৈধ JSON নয়। সাধারণ কারণ ট্রেলিং কমা, একক উদ্ধৃতি, উদ্ধৃতিহীন কী, মন্তব্য, বা কাটা মান। সঠিক বার্তা রানটাইমের উপর নির্ভর করে।
JSON বৈধ কিনা কীভাবে যাচাই করব?
JSON ফরম্যাটার ও তুলনা-এর মতো যাচাইকারীতে আটকান, বা কনসোলে JSON.parse ডাকুন। পার্স ছুঁড়লে পাঠ বৈধ JSON নয়।