ما هو JSON؟ دليل شامل للمبتدئين
تعلم ما هو JSON، قواعد الصياغة، أنواع البيانات، وحالات الاستخدام. دليل شامل للمبتدئين لفهم JavaScript Object Notation وأهميته في تطوير البرمجيات الحديثة.
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# ما هو JSON؟ دليل شامل للمبتدئين
JSON (JavaScript Object Notation) أصبح المعيار الفعلي لتبادل البيانات على الويب. سواء كنت مبرمجاً مبتدئاً، محلل بيانات، أو فقط فضولياً حول تقنيات الويب، فإن فهم JSON ضروري في المشهد الرقمي اليوم.
ما معنى JSON؟
JSON تعني JavaScript Object Notation (تدوين كائنات جافا سكريبت). على الرغم من اسمه، JSON هو تنسيق بيانات مستقل عن اللغة يمكن استخدامه مع أي لغة برمجة تقريباً، بما في ذلك Python وJava وC# وPHP وبالطبع JavaScript.
أصل JSON
تم تقديم JSON بواسطة دوغلاس كروكفورد في أوائل العقد الأول من القرن الحادي والعشرين كبديل خفيف لـ XML لتبادل البيانات. جعلت بساطته وسهولة قراءته منه الخيار المفضل بسرعة لواجهات برمجة تطبيقات الويب وملفات التكوين.
لماذا JSON مهم في 2026؟
في تطوير البرمجيات الحديثة، JSON موجود في كل مكان:
- واجهات برمجة تطبيقات الويب (Web APIs): تستخدم واجهات REST APIs بشكل أساسي JSON لحمولات الطلبات والاستجابات
- ملفات التكوين: تستخدم التطبيقات ملفات
.jsonللإعدادات والتكوينات - قواعد بيانات NoSQL: تخزن MongoDB وقواعد البيانات المشابهة البيانات بتنسيقات تشبه JSON
- تبادل البيانات: تتواصل الأنظمة عن طريق تمرير JSON بين الخدمات
- الذكاء الاصطناعي والتعلم الآلي: غالباً ما تستخدم تكوينات النماذج ومجموعات البيانات JSON
صياغة وبنية JSON
قواعد الصياغة الأساسية
تتبع صياغة JSON هذه القواعد الأساسية:
"name": "value",{}[]"text"مثال JSON بسيط
{
"الاسم": "أحمد محمد",
"العمر": 30,
"المدينة": "الرياض"
}
هذا كائن JSON بسيط يحتوي على ثلاثة أزواج من المفتاح والقيمة.
أنواع البيانات في JSON
يدعم JSON ستة أنواع من البيانات:
1. النصوص (Strings)
النصوص يجب أن تكون محاطة بعلامات اقتباس مزدوجة:
{
"الاسم": "أحمد محمد",
"الوظيفة": "مهندس برمجيات",
"الرسالة": "مرحباً بالعالم!"
}
2. الأرقام (Numbers)
تشمل الأرقام الصحيحة والعشرية، الموجبة والسالبة:
{
"العمر": 30,
"الارتفاع": 175.5,
"الحرارة": -5,
"المسافة": 1.5e10
}
3. القيم المنطقية (Booleans)
القيم المنطقية إما true أو false:
{
"نشط": true,
"محذوف": false,
"مؤكد": true
}
4. القيمة Null
يمثل null قيمة فارغة أو غير موجودة:
{
"اسمالأب": null,
"الهاتفالثانوي": null
}
5. المصفوفات (Arrays)
المصفوفات هي قوائم مرتبة من القيم:
{
"الألوان": ["أحمر", "أزرق", "أخضر"],
"الأرقام": [1, 2, 3, 4, 5],
"مختلط": [1, "نص", true, null]
}
6. الكائنات (Objects)
الكائنات هي مجموعات من أزواج المفتاح والقيمة:
{
"المستخدم": {
"الاسم": "أحمد محمد",
"العمر": 30,
"العنوان": {
"المدينة": "الرياض",
"الشارع": "شارع الملك فهد",
"الرمزالبريدي": "12345"
}
}
}
أمثلة عملية شاملة
مثال 1: ملف تعريف المستخدم
{
"id": 12345,
"اسمالمستخدم": "ahmed_mohammed",
"الاسمالكامل": "أحمد محمد العلي",
"البريدالإلكتروني": "ahmed@example.com",
"العمر": 30,
"تاريخالميلاد": "1996-05-15",
"نشط": true,
"الأدوار": ["مستخدم", "مدير", "محرر"],
"الإعدادات": {
"اللغة": "ar",
"المنطقةالزمنية": "Asia/Riyadh",
"الإشعارات": {
"البريدالإلكتروني": true,
"الرسائلالنصية": false,
"الدفع": true
}
},
"العنوان": {
"الشارع": "شارع الملك فهد",
"المدينة": "الرياض",
"المنطقة": "الرياض",
"الدولة": "السعودية",
"الرمزالبريدي": "12345"
},
"الهوايات": ["القراءة", "البرمجة", "السفر"],
"تاريخالتسجيل": "2020-01-15T10:30:00Z",
"آخرتسجيلدخول": "2026-01-26T09:15:00Z"
}
مثال 2: استجابة API
{
"الحالة": "نجاح",
"رمزالحالة": 200,
"الرسالة": "تم جلب البيانات بنجاح",
"البيانات": {
"المستخدمون": [
{
"id": 1,
"الاسم": "أحمد محمد",
"البريدالإلكتروني": "ahmed@example.com",
"نشط": true
},
{
"id": 2,
"الاسم": "فاطمة علي",
"البريدالإلكتروني": "fatima@example.com",
"نشط": true
}
],
"إجماليالصفحات": 10,
"الصفحةالحالية": 1,
"العددلكلصفحة": 20
},
"الوقت": "2026-01-26T10:30:00Z"
}
مثال 3: ملف تكوين التطبيق
{
"اسمالتطبيق": "تطبيقي الرائع",
"الإصدار": "2.1.0",
"البيئة": "production",
"قاعدةالبيانات": {
"النوع": "postgresql",
"المضيف": "localhost",
"المنفذ": 5432,
"اسمقاعدةالبيانات": "myapp_db",
"المستخدم": "db_user",
"الحدالأقصىللاتصالات": 100
},
"الخادم": {
"المنفذ": 3000,
"المضيف": "0.0.0.0",
"بروتوكولhttps": true
},
"التسجيل": {
"المستوى": "info",
"المسار": "/var/log/myapp",
"الحجمالأقصى": "100MB"
},
"الميزات": {
"المصادقة": true,
"الدفع": true,
"التحليلات": false
}
}
مزايا JSON
1. سهولة القراءة للإنسان
JSON سهل القراءة والكتابة للبشر بفضل صياغته البسيطة والواضحة.
2. خفيف الوزن
حجم ملف JSON أصغر بكثير من XML، مما يجعل نقل البيانات أسرع وأكثر كفاءة.
3. سهولة التحليل
معظم لغات البرمجة لديها مكتبات مدمجة أو جاهزة لتحليل وإنشاء JSON.
4. مستقل عن اللغة
على الرغم من اسمه، يمكن استخدام JSON مع أي لغة برمجة تقريباً.
5. يدعم الهياكل المعقدة
يمكن لـ JSON تمثيل هياكل بيانات معقدة من خلال التداخل والمصفوفات.
JSON في لغات البرمجة المختلفة
JavaScript
// تحويل نص JSON إلى كائن JavaScript
const jsonString = '{"الاسم":"أحمد","العمر":30}';
const obj = JSON.parse(jsonString);
console.log(obj.الاسم); // "أحمد"
// تحويل كائن JavaScript إلى نص JSON
const user = {
الاسم: "أحمد محمد",
العمر: 30,
المدينة: "الرياض"
};
const jsonOutput = JSON.stringify(user);
console.log(jsonOutput); // {"الاسم":"أحمد محمد","العمر":30,"المدينة":"الرياض"}
Python
import json
# تحويل نص JSON إلى كائن Python
json_string = '{"الاسم":"أحمد","العمر":30}'
data = json.loads(json_string)
print(data['الاسم']) # "أحمد"
# تحويل كائن Python إلى نص JSON
user = {
"الاسم": "أحمد محمد",
"العمر": 30,
"المدينة": "الرياض"
}
json_output = json.dumps(user, ensure_ascii=False)
print(json_output)
Java
import com.google.gson.Gson;
// تحويل نص JSON إلى كائن Java
Gson gson = new Gson();
String jsonString = "{"name":"أحمد","age":30}";
User user = gson.fromJson(jsonString, User.class);
// تحويل كائن Java إلى نص JSON
User newUser = new User("أحمد محمد", 30);
String json = gson.toJson(newUser);
PHP
<?php
// تحويل نص JSON إلى مصفوفة PHP
$jsonString = '{"الاسم":"أحمد","العمر":30}';
$data = json_decode($jsonString, true);
echo $data['الاسم']; // "أحمد"
// تحويل مصفوفة PHP إلى نص JSON
$user = [
'الاسم' => 'أحمد محمد',
'العمر' => 30,
'المدينة' => 'الرياض'
];
$jsonOutput = json_encode($user, JSON_UNESCAPED_UNICODE);
echo $jsonOutput;
?>
حالات الاستخدام الحقيقية
1. واجهات برمجة التطبيقات REST
معظم واجهات REST APIs الحديثة تستخدم JSON كتنسيق لتبادل البيانات:
// طلب POST
{
"الاسم": "أحمد محمد",
"البريدالإلكتروني": "ahmed@example.com"
}
// استجابة
{
"الحالة": "نجاح",
"البيانات": {
"id": 123,
"الاسم": "أحمد محمد",
"تاريخالإنشاء": "2026-01-26"
}
}
2. ملفات التكوين
العديد من الأدوات والأطر تستخدم JSON للتكوين:
- package.json: في مشاريع Node.js
- tsconfig.json: لتكوين TypeScript
- composer.json: في مشاريع PHP
- .eslintrc.json: لتكوين ESLint
3. قواعد البيانات NoSQL
قواعد بيانات مثل MongoDB تخزن البيانات بتنسيق BSON (نسخة ثنائية من JSON):
{
"_id": ObjectId("507f1f77bcf86cd799439011"),
"الاسم": "أحمد محمد",
"العمر": 30,
"الطلبات": [
{
"رقمالطلب": "ORD-001",
"المبلغ": 150.50,
"التاريخ": ISODate("2026-01-26")
}
]
}
4. تطبيقات الجوال
تطبيقات iOS وAndroid تتواصل مع الخوادم باستخدام JSON APIs.
5. تخزين المتصفح
تستخدم واجهات برمجة التطبيقات مثل localStorage وsessionStorage JSON لتخزين البيانات:
// تخزين البيانات
const userData = {
الاسم: "أحمد",
المفضلات: ["برمجة", "قراءة"]
};
localStorage.setItem('user', JSON.stringify(userData));
// استرجاع البيانات
const storedUser = JSON.parse(localStorage.getItem('user'));
أفضل الممارسات
1. استخدم تسمية متسقة
اختر نمط تسمية والتزم به عبر ملفات JSON الخاصة بك:
// ✓ جيد - camelCase متسق
{
"firstName": "أحمد",
"lastName": "محمد",
"emailAddress": "ahmed@example.com"
}
// ✗ سيء - تسمية غير متسقة
{
"first_name": "أحمد",
"LastName": "محمد",
"email-address": "ahmed@example.com"
}
2. استخدم أسماء مفاتيح وصفية
اجعل أسماء المفاتيح واضحة ووصفية:
// ✓ جيد
{
"عنوانالبريدالإلكتروني": "ahmed@example.com",
"رقمالهاتف": "+966501234567"
}
// ✗ سيء
{
"e": "ahmed@example.com",
"p": "+966501234567"
}
3. تجنب التداخل العميق
حاول إبقاء التداخل ضحلاً (3-4 مستويات كحد أقصى):
// ✓ مقبول
{
"المستخدم": {
"العنوان": {
"المدينة": "الرياض"
}
}
}
// ✗ عميق جداً
{
"أ": {
"ب": {
"ج": {
"د": {
"ه": {
"قيمة": "صعب القراءة"
}
}
}
}
}
}
4. تحقق من صحة JSON
استخدم أدوات التحقق من الصحة للتأكد من أن JSON الخاص بك صالح.
5. استخدم المسافات البادئة للقراءة
عند كتابة JSON يدوياً، استخدم مسافات بادئة للوضوح:
{
"الاسم": "أحمد",
"العنوان": {
"المدينة": "الرياض",
"الشارع": "شارع الملك فهد"
}
}
6. استخدم المصفوفات للبيانات المتكررة
// ✓ جيد
{
"المنتجات": [
{"id": 1, "الاسم": "منتج 1"},
{"id": 2, "الاسم": "منتج 2"}
]
}
// ✗ سيء
{
"منتج1": {"id": 1, "الاسم": "منتج 1"},
"منتج2": {"id": 2, "الاسم": "منتج 2"}
}
الأخطاء الشائعة وكيفية تجنبها
1. الفواصل الزائدة
// ✗ خطأ - فاصلة زائدة
{
"الاسم": "أحمد",
"العمر": 30,
}
// ✓ صحيح
{
"الاسم": "أحمد",
"العمر": 30
}
2. استخدام علامات اقتباس مفردة
// ✗ خطأ
{
'الاسم': 'أحمد'
}
// ✓ صحيح
{
"الاسم": "أحمد"
}
3. التعليقات
JSON لا يدعم التعليقات رسمياً:
// ✗ غير مدعوم في JSON القياسي
{
// هذا تعليق
"الاسم": "أحمد"
}
أدوات JSON المفيدة
الملخص
JSON هو:
- ✅ بسيط وسهل الفهم: صياغة واضحة ومباشرة
- ✅ خفيف الوزن: حجم ملف صغير مقارنة بـ XML
- ✅ سريع: تحليل وإنشاء سريع
- ✅ مستقل عن اللغة: يعمل مع جميع لغات البرمجة تقريباً
- ✅ عالمي: مدعوم على نطاق واسع ومستخدم في كل مكان
- ✅ موحد: محدد بواسطة RFC 8259
في عالم التطوير الحديث، JSON ليس مجرد تنسيق بيانات - إنه اللغة المشتركة التي تتحدث بها الأنظمة المختلفة مع بعضها البعض. من واجهات برمجة التطبيقات إلى قواعد البيانات إلى ملفات التكوين، JSON موجود في كل مكان. فهم JSON جيداً هو مهارة أساسية لأي مطور في 2026 وما بعده.
ابدأ باستخدام JSON اليوم، واكتشف كيف يمكن أن يبسط عملية تبادل البيانات في تطبيقاتك!
مقالات ذات صلة
ملف JSON: البنية والاستخدامات والأمثلة
دليل شامل لفهم بنية ملفات JSON، الامتدادات، التنسيق، وأفضل الممارسات.
JSON مقابل XML: أيهما أفضل لمشروعك؟
مقارنة شاملة بين JSON و XML من حيث الأداء، سهولة الاستخدام، والحالات المثلى لكل منهما.
كيفية تنسيق JSON: دليل شامل
تعلم كيفية تنسيق JSON بشكل صحيح. أدوات، تقنيات، وأفضل الممارسات لجعل JSON قابل للقراءة.