ما هو JSON؟
JSON اختصار JavaScript Object Notation (ترميز كائنات جافاسكريبت). هو تنسيق نصّي بسيط لتمثيل البيانات وتبادلها بين الأنظمة. ابتُكر عام 2001 بواسطة Douglas Crockford، وأصبح اليوم المعيار الأكثر شيوعاً لنقل البيانات في الإنترنت — أكثر من XML بكثير.
سبب شعبيته:
- سهل القراءة للإنسان: يشبه أسلوب كتابة الفهرس أو القائمة
- سهل المعالجة للآلة: كل لغات البرمجة الحديثة تتعامل معه بسطر واحد
- خفيف: حجم ملفاته أصغر من XML بـ 30-50%
- متعدّد المنصّات: يعمل في جافاسكريبت، بايثون، Java، PHP، وكل اللغات
- مستقلّ عن اللغة: رغم اسمه، لا يحتاج لمعرفة JavaScript
أول نظرة على JSON
إليك مثال JSON بسيط يمثّل شخصاً:
{
"name": "أحمد",
"age": 30,
"city": "الرياض",
"isStudent": false,
"skills": ["JavaScript", "Python", "SQL"],
"address": {
"street": "شارع الملك فهد",
"postal_code": "12345"
},
"phone": null
}
كل المعلومات هنا واضحة بصرياً. حتى لو لم تكن مبرمجاً، تستطيع فهم: أن هذا شخص اسمه أحمد، عمره 30، يسكن الرياض، ليس طالباً، يجيد 3 لغات برمجة، وله عنوان في شارع الملك فهد.
أنواع البيانات في JSON
JSON يدعم 6 أنواع فقط — وهذا من أسرار بساطته:
1. النصوص (Strings)
تُحاط دائماً بـ علامتي اقتباس مزدوجتين:
"name": "محمد" "email": "user@example.com" "language": "ar"
تدعم النصوص العربية والإيموجي والرموز الخاصة بشكل كامل (يستخدم UTF-8 افتراضياً).
2. الأرقام (Numbers)
تُكتَب بدون علامات اقتباس:
"age": 30 "price": 99.99 "temperature": -5 "big": 1e10
3. القيم المنطقية (Booleans)
اثنتان فقط: true أو false (بحروف صغيرة):
"isActive": true "isDeleted": false
4. القيمة الفارغة (null)
تُستخدم للإشارة إلى غياب القيمة:
"phone": null "middleName": null
5. المصفوفات (Arrays)
قائمة مرتّبة من القيم بين أقواس مربّعة [ ]:
"colors": ["أحمر", "أزرق", "أخضر"] "numbers": [1, 2, 3, 4, 5] "mixed": ["نص", 42, true, null]
6. الكائنات (Objects)
مجموعة من أزواج مفتاح:قيمة بين أقواس متعرّجة { }:
{
"name": "أحمد",
"age": 30
}
يمكن للكائنات أن تتداخل بداخل بعضها (Nesting) إلى أيّ عمق:
{
"user": {
"personal": {
"name": "أحمد"
}
}
}
منسّق JSON ومحقّق صحته
تنسيق، ضغط، وفحص صحّة بنية JSON فوراً
القواعد الصارمة لـ JSON
JSON أبسط من XML لكنّه أكثر صرامة في القواعد:
- كل المفاتيح يجب أن تكون نصوصاً (بين علامات اقتباس مزدوجة)
- علامات الاقتباس المزدوجة فقط — لا تستخدم المفردة
' - لا فواصل زائدة: آخر عنصر في كائن أو مصفوفة يجب ألا تتبعه فاصلة
- لا تعليقات — JSON لا يدعم
// commentأو/* */ - الأقواس يجب أن تتطابق — لكل
{هناك} - المفاتيح حسّاسة للحالة:
"name"غير"Name"
JSON صحيح vs خاطئ — اكتشف الفرق
❌ خاطئ:
{
name: "أحمد", // مفتاح بدون اقتباس
'age': 30, // اقتباس مفرد
"city": "الرياض", // فاصلة زائدة في النهاية ↓
}
✅ صحيح:
{
"name": "أحمد",
"age": 30,
"city": "الرياض"
}
أين يُستخدم JSON؟
1. واجهات برمجة التطبيقات (APIs)
أكثر استخدام شيوعاً. تطبيقات الموبايل والمواقع تتواصل مع الخوادم عبر JSON. مثلاً، تطبيق الطقس يطلب الطقس من API:
{
"city": "مسقط",
"temp": 32,
"humidity": 65,
"condition": "مشمس"
}
2. ملفات الإعدادات (Configuration)
كل المشاريع البرمجية الحديثة تستخدم JSON لإعداداتها:
package.json— إعدادات مشروع Node.jstsconfig.json— إعدادات TypeScript.vscode/settings.json— إعدادات محرّر VS Codemanifest.json— إعدادات الإضافات وتطبيقات الويب
3. قواعد البيانات الحديثة (NoSQL)
قواعد بيانات مثل MongoDB و Firebase تخزّن البيانات بصيغة JSON مباشرة، مما يجعل العمل بها سهلاً جداً.
4. تخزين البيانات المحلية في المتصفّح
متصفّحات الإنترنت تستخدم JSON لتخزين بيانات في localStorage:
localStorage.setItem('user',
JSON.stringify({name: 'أحمد', token: 'abc123'})
);
5. تبادل البيانات بين الخدمات
عندما يتواصل تطبيقان بأيّ لغتين مختلفتين (Python ↔ JavaScript مثلاً)، JSON هو "اللغة المشتركة" بينهما.
JSON في لغات البرمجة المختلفة
JavaScript
// تحويل من JSON نصّ إلى كائن
const obj = JSON.parse('{"name":"أحمد"}');
console.log(obj.name); // أحمد
// تحويل من كائن إلى نصّ JSON
const json = JSON.stringify({name: 'أحمد'});
Python
import json
# من نصّ إلى قاموس
data = json.loads('{"name":"أحمد"}')
print(data['name']) # أحمد
# من قاموس إلى نصّ
text = json.dumps({'name': 'أحمد'})
PHP
// من نصّ إلى مصفوفة
$data = json_decode('{"name":"أحمد"}', true);
echo $data['name']; // أحمد
// من مصفوفة إلى نصّ
$text = json_encode(['name' => 'أحمد']);
الأخطاء الشائعة عند المبتدئين
1. الخلط بين JSON و JavaScript Object
رغم تشابه الاسم، هناك فروق:
| الميّزة | JSON | JS Object |
|---|---|---|
| المفاتيح | مع اقتباس دائماً | بدون اقتباس مسموح |
| التعليقات | غير مدعومة | مدعومة |
| الدوال | غير مدعومة | مدعومة |
| التواريخ | كنصوص فقط | كائنات Date |
2. نسيان الفواصل بين العناصر
// خطأ
{
"a": 1
"b": 2
}
// صحيح
{
"a": 1,
"b": 2
}
3. استخدام undefined بدل null
undefined ليس قيمة صحيحة في JSON. استخدم null:
// خطأ
{"value": undefined}
// صحيح
{"value": null}
4. عدم التحقق قبل المعالجة
دائماً لفّ JSON.parse بـ try/catch لأن البيانات الخارجية قد تكون تالفة:
try {
const data = JSON.parse(input);
// استخدم البيانات
} catch (e) {
console.error('JSON غير صالح:', e.message);
}
أدوات مفيدة للعمل مع JSON
- منسّق JSON المباشر: حاسبتنا تنسّق وتفحص JSON فورياً
- JSONLint: أداة موثوقة لاكتشاف الأخطاء
- JSON Schema: لتعريف بنية JSON متوقّعة
- jq: أداة سطر أوامر قوية للتعامل مع JSON
- Postman: لاختبار APIs ومشاهدة استجابات JSON
JSON vs YAML vs XML
هناك صيغ منافسة، فمتى تستخدم كلاً منها؟
- JSON: APIs، تطبيقات الويب، التواصل بين الخدمات — الخيار الافتراضي اليوم
- YAML: ملفات إعدادات يكتبها بشر (DevOps, Docker, K8s) — أكثر قابلية للقراءة
- XML: الأنظمة القديمة، بعض المعايير الصناعية (SOAP) — حجم أكبر وتعقيد أعلى
نصائح للممارسة
- ابدأ بأمثلة بسيطة قبل أن تحاول كتابة JSON معقّد
- استخدم منسّق JSON أثناء التعلّم لاكتشاف الأخطاء بسرعة
- افحص APIs مجانية مثل JSONPlaceholder للتجربة
- اقرأ JSON من مواقع حقيقية (مثلاً، Twitter API responses)
- ادمج JSON مع لغة برمجة بسيطة كـ Python للممارسة
الخلاصة
JSON ليس تقنية معقّدة — هو ببساطة طريقة منظّمة لكتابة البيانات يفهمها البشر والآلات على حدّ سواء. مع إتقان 6 أنواع بيانات و 6 قواعد صياغة، تستطيع التعامل مع 99% من JSON الذي ستصادفه في عملك.
إذا كنت بدأت رحلة تعلّم البرمجة أو التعامل مع APIs، فالاستثمار في فهم JSON من أفضل القرارات. هو لغة الويب الحديث، وكلّما تعمّقت في التطوير، ستجده في كل مكان.
للتدرّب الفوري، استخدم منسّق JSON المجاني لتجربة الأمثلة في هذا المقال وكتابة JSON الخاص بك.