الرئيسيةالمدوّنةدليل JSON

دليل المبتدئ إلى JSON — الصيغة والقواعد والاستخدامات

ما هو JSON؟

JSON اختصار JavaScript Object Notation (ترميز كائنات جافاسكريبت). هو تنسيق نصّي بسيط لتمثيل البيانات وتبادلها بين الأنظمة. ابتُكر عام 2001 بواسطة Douglas Crockford، وأصبح اليوم المعيار الأكثر شيوعاً لنقل البيانات في الإنترنت — أكثر من XML بكثير.

سبب شعبيته:

أول نظرة على 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 لكنّه أكثر صرامة في القواعد:

  1. كل المفاتيح يجب أن تكون نصوصاً (بين علامات اقتباس مزدوجة)
  2. علامات الاقتباس المزدوجة فقط — لا تستخدم المفردة '
  3. لا فواصل زائدة: آخر عنصر في كائن أو مصفوفة يجب ألا تتبعه فاصلة
  4. لا تعليقات — JSON لا يدعم // comment أو /* */
  5. الأقواس يجب أن تتطابق — لكل { هناك }
  6. المفاتيح حسّاسة للحالة: "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 لإعداداتها:

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

رغم تشابه الاسم، هناك فروق:

الميّزةJSONJS 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 vs YAML vs XML

هناك صيغ منافسة، فمتى تستخدم كلاً منها؟

نصائح للممارسة

  1. ابدأ بأمثلة بسيطة قبل أن تحاول كتابة JSON معقّد
  2. استخدم منسّق JSON أثناء التعلّم لاكتشاف الأخطاء بسرعة
  3. افحص APIs مجانية مثل JSONPlaceholder للتجربة
  4. اقرأ JSON من مواقع حقيقية (مثلاً، Twitter API responses)
  5. ادمج JSON مع لغة برمجة بسيطة كـ Python للممارسة

الخلاصة

JSON ليس تقنية معقّدة — هو ببساطة طريقة منظّمة لكتابة البيانات يفهمها البشر والآلات على حدّ سواء. مع إتقان 6 أنواع بيانات و 6 قواعد صياغة، تستطيع التعامل مع 99% من JSON الذي ستصادفه في عملك.

إذا كنت بدأت رحلة تعلّم البرمجة أو التعامل مع APIs، فالاستثمار في فهم JSON من أفضل القرارات. هو لغة الويب الحديث، وكلّما تعمّقت في التطوير، ستجده في كل مكان.

للتدرّب الفوري، استخدم منسّق JSON المجاني لتجربة الأمثلة في هذا المقال وكتابة JSON الخاص بك.

📚 مقالات ذات صلة