JSON.parse(): JSON স্ট্রিং থেকে জাভাস্ক্রিপ্ট অবজেক্ট
JSON (JavaScript Object Notation) আসলে জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন। ব্রাউজার এবং Node.js-এ বিল্ট-ইন JSON অবজেক্ট থাকে যা পার্সিং এবং স্ট্রিংজিফিকেশন করে।
বেসিক সিনট্যাক্স
const obj = JSON.parse(jsonString[, reviver]);
jsonString: বৈধ JSON স্ট্রিং।reviver(ঐচ্ছিক): ফাংশন যা প্রতিটি কী-ভ্যালু পেয়ারকে ট্রান্সফর্ম করতে পারে।
সاده উদাহরণ
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);
console.log(obj.count); // 42
console.log(obj.result); // true
console.log(typeof obj); // 'object'
Reviver ফাংশন ব্যবহার (উন্নত)
পার্সিংয়ের সময় ডেটা ট্রান্সফর্ম করতে (যেমন ডেট স্ট্রিং থেকে Date অবজেক্ট):
const json = '{"date":"2024-01-15T10:30:00Z", "value": 100}';
const obj = JSON.parse(json, (key, value) => {
if (key === 'date') return new Date(value);
return value;
});
console.log(obj.date instanceof Date); // true
console.log(obj.date.getFullYear()); // 2024
সাধারণ ত্রুটি এবং সমাধান
| ত্রুটি | কারণ | সমাধান |
|---|---|---|
| SyntaxError: Unexpected token | অবৈধ JSON (সিঙ্গেল কোট, ট্রেইলিং কমা, কমেন্ট) | বৈধ JSON নিশ্চিত করুন: ডবল কোট, কোনো কমেন্ট/ট্রেইলিং কমা নয় |
| SyntaxError: JSON.parse: bad control character | স্ট্রিং-এ কন্ট্রোল ক্যারেক্টার (নিউলাইন, ট্যাব) এসকেপ নেই | সার্ভার থেকে সঠিক JSON এনকোড নিশ্চিত করুন |
| পার্স সফল কিন্তু ডেটা আসছে না | রুট লেভেলে অ্যারে বা প্রিমিটিভ | JSON.parse যেকোনো বৈধ JSON ভ্যালু পার্স করে (অবজেক্ট, অ্যারে, স্ট্রিং, নম্বর) |
বিপরীত কাজ: অবজেক্ট থেকে JSON স্ট্রিং
const obj = {name: 'Rahim', age: 25};
const json = JSON.stringify(obj);
// '{"name":"Rahim","age":25}'
// ফরম্যাটিংসহ (ইনডেন্ট ২ স্পেস)
const pretty = JSON.stringify(obj, null, 2);
সিকিউরিটি সতর্কতা
- অবিশ্বস্ত সোর্স থেকে JSON পার্স করলে XSS হুমলার ঝুঁকি থাকে (যদি
evalব্যবহার করা হয়, কিন্তুJSON.parseনিরাপদ)। JSON.parseকোনো কোড এক্সিকিউট করে না, শুধু ডেটা পার্স করে।
Node.js-এ বড় ফাইল পার্স করা
বড় JSON ফাইলের জন্য স্ট্রিম পার্সার (যেমন JSONStream, stream-json) ব্যবহার করুন মেমরি বাঁচাতে।