JSON — JavaScript Object Notation

লেসন ৩৮ / ৪৪

JSON কী?

JSON (JavaScript Object Notation) হলো ডেটা বিনিময়ের একটি লাইটওয়েট, টেক্সট-ভিত্তিক ফরম্যাট। Server ও client এর মধ্যে ডেটা পাঠানোর জন্য আজকের web-এ সবচেয়ে জনপ্রিয় ফরম্যাট।

JSON Syntax

{
    "name": "করিম",
    "age": 25,
    "isActive": true,
    "balance": 1500.50,
    "address": null,
    "hobbies": ["পড়া", "ভ্রমণ", "কোডিং"],
    "location": {
        "city": "ঢাকা",
        "country": "Bangladesh"
    }
}

JSON-এর নিয়ম

  • Key অবশ্যই double quote ("...") এ থাকবে
  • String value-ও double quote এ
  • Number, boolean, null — quote ছাড়া
  • শেষে trailing comma দেওয়া যাবে না
  • Comment লেখা যাবে না
  • Function বা undefined থাকতে পারবে না

Supported Data Types

  • String — "hello"
  • Number — 42, 3.14
  • Boolean — true, false
  • null
  • Array — [1, 2, 3]
  • Object — { "key": "value" }

JSON ↔ JavaScript

// JS Object → JSON string
const user = { name: "করিম", age: 25 };
const json = JSON.stringify(user);
console.log(json);
// '{"name":"করিম","age":25}'

// Pretty print (indent)
console.log(JSON.stringify(user, null, 2));

// JSON string → JS Object
const jsonStr = '{"name":"করিম","age":25}';
const obj = JSON.parse(jsonStr);
console.log(obj.name);  // "করিম"

Error Handling

try {
    const data = JSON.parse(invalidJson);
} catch (e) {
    console.error("Invalid JSON:", e.message);
}

JSON vs XML

// JSON (আধুনিক)
{
    "user": {
        "name": "করিম",
        "age": 25
    }
}

// XML (পুরনো)
<user>
    <name>করিম</name>
    <age>25</age>
</user>

JSON ছোট, দ্রুত parse হয়, JS-এ native support — তাই XML কে প্রায় রিপ্লেস করেছে।

বাস্তব JSON Response উদাহরণ

{
    "success": true,
    "code": 200,
    "data": {
        "users": [
            { "id": 1, "name": "করিম", "role": "admin" },
            { "id": 2, "name": "রহিম", "role": "user" }
        ],
        "total": 2
    },
    "message": "User list fetched successfully"
}

localStorage-এ JSON সংরক্ষণ

const user = { name: "করিম", age: 25 };

// Save
localStorage.setItem("user", JSON.stringify(user));

// Load
const saved = JSON.parse(localStorage.getItem("user"));
console.log(saved.name);  // "করিম"