JSON - تنسيق البيانات — JavaScript الأساسيات
JSON في JavaScript
ما هو JSON؟
JavaScript Object Notation
تنسيق نصي لتبادل البيانات.
لماذا JSON مهم؟
- تبادل البيانات مع الخوادم (APIs)
- حفظ البيانات في localStorage
- ملفات الإعدادات (package.json)
صيغة JSON
{
"name": "أحمد",
"age": 25,
"isStudent": true,
"hobbies": ["قراءة", "برمجة"],
"address": {
"city": "بغداد"
}
}القواعد المهمة
- المفاتيح يجب أن تكون بين علامات تنصيص
- النصوص بين علامات تنصيص مزدوجة فقط
- لا تعليقات
- لا فاصلة بعد آخر عنصر
التحويل في JavaScript
من Object إلى JSON (Stringify)
const obj = { name: "أحمد", age: 25 };
const json = JSON.stringify(obj);
// '{"name":"أحمد","age":25}'من JSON إلى Object (Parse)
const json = '{"name":"أحمد","age":25}';
const obj = JSON.parse(json);
// { name: "أحمد", age: 25 }استخدام مع localStorage
// حفظ
const user = { name: "أحمد" };
localStorage.setItem("user", JSON.stringify(user));
// قراءة
const saved = JSON.parse(localStorage.getItem("user"));// ===== JSON.stringify - تحويل لنص =====
const user = {
name: "أحمد",
age: 25,
skills: ["JavaScript", "React"],
isActive: true
};
const jsonString = JSON.stringify(user);
console.log(jsonString);
// {"name":"أحمد","age":25,"skills":["JavaScript","React"],"isActive":true}
// مع تنسيق (للقراءة)
const formatted = JSON.stringify(user, null, 2);
console.log(formatted);
/*
{
"name": "أحمد",
"age": 25,
"skills": [
"JavaScript",
"React"
],
"isActive": true
}
*/
// ===== JSON.parse - تحويل لـ Object =====
const jsonData = '{"name":"سارة","age":22,"city":"بغداد"}';
const person = JSON.parse(jsonData);
console.log(person.name); // سارة
console.log(person.age); // 22
// ===== استخدام عملي: localStorage =====
// حفظ سلة التسوق
const cart = [
{ id: 1, name: "هاتف", price: 500 },
{ id: 2, name: "سماعات", price: 50 }
];
localStorage.setItem("cart", JSON.stringify(cart));
// استرجاع السلة
const savedCart = JSON.parse(localStorage.getItem("cart")) || [];
console.log(savedCart);
// ===== معالجة الأخطاء =====
function safeParseJSON(jsonString) {
try {
return JSON.parse(jsonString);
} catch (error) {
console.error("JSON غير صالح:", error.message);
return null;
}
}
// اختبار
safeParseJSON('{"valid": true}'); // ✅ يعمل
safeParseJSON('{invalid}'); // ❌ خطأ - يرجع null
// ===== نسخ كائن (Deep Copy) =====
const original = { a: 1, b: { c: 2 } };
const copy = JSON.parse(JSON.stringify(original));
copy.b.c = 99;
console.log(original.b.c); // 2 (لم يتغير)اختبر فهمك