ما هو JSON؟ دليل شامل للمبتدئين
ما هو JSON؟
JSON (JavaScript Object Notation) هو تنسيق تبادل بيانات نصي خفيف الوزن مصمم ليكون سهل القراءة والكتابة للبشر وسهل التحليل والتوليد للآلات. تم اشتقاقه في الأصل من صياغة كائنات JavaScript الحرفية لكنه أصبح منذ ذلك الحين معيارًا مستقلاً عن اللغة مدعومًا من جميع لغات البرمجة تقريبًا.
اليوم، JSON هو التنسيق المهيمن لتبادل البيانات على الويب. إنه يشغل REST APIs وملفات التكوين وقواعد بيانات NoSQL واتصالات تطبيقات الهاتف المحمول وعدد لا يحصى من الأنظمة الأخرى القائمة على البيانات. جعلت بساطته وانتشاره الخيار الافتراضي للمطورين في جميع أنحاء العالم.
قواعد صياغة JSON
يتبع JSON مجموعة صارمة وبسيطة من قواعد الصياغة:
- يتم تنظيم البيانات في أزواج مفتاح/قيمة
- يجب أن تكون جميع المفاتيح نصوصًا بين علامتي اقتباس مزدوجتين (علامات الاقتباس المفردة غير مسموح بها)
- يتم فصل أزواج المفتاح/القيمة بنقطتين (
:) - يتم فصل الأزواج بفواصل (
,) - الأقواس المنحنية
{}تحتوي على الكائنات - الأقواس المربعة
[]تحتوي على المصفوفات - لا يُسمح بالفواصل الزائدة
- لا يُسمح بالتعليقات في JSON الصارم
مثال JSON صالح
{
"name": "Jane Smith",
"age": 28,
"isEmployed": true,
"skills": ["JavaScript", "Python", "SQL"],
"address": {
"street": "123 Main Street",
"city": "San Francisco",
"zipCode": "94102"
},
"phoneNumbers": null
}
أمثلة JSON غير صالح
فاصلة زائدة (غير صالح):
{
"name": "Jane",
"age": 28,
}
مفتاح بعلامات اقتباس مفردة (غير صالح):
{ 'name': 'Jane' }
علامات الاقتباس مفقودة على المفتاح (غير صالح):
{ name: "Jane" }
أنواع بيانات JSON
يدعم JSON ستة أنواع بيانات بالضبط:
| النوع | الوصف | مثال |
|------|-------------|---------|
| نص (String) | نص Unicode بين علامتي اقتباس مزدوجتين | "Hello, world!" |
| رقم (Number) | عدد صحيح أو عشري | 42, 3.14, -7, 1.5e10 |
| منطقي (Boolean) | صحيح أو خطأ منطقي | true, false |
| Null | قيمة فارغة مقصودة | null |
| كائن (Object) | مجموعة غير مرتبة من المفاتيح/القيم | {"key": "value"} |
| مصفوفة (Array) | قائمة مرتبة من القيم | [1, 2, 3] |
الغياب الملحوظ: التواريخ والطوابع الزمنية والبيانات الثنائية وundefined والدوال ليس لها تمثيل أصلي في JSON. عادة ما يتم تخزين التواريخ كنصوص ISO 8601 وفقًا للاتفاقية.
JSON مقابل تنسيقات البيانات الأخرى
يجلس JSON جنبًا إلى جنب مع العديد من تنسيقات تبادل البيانات الأخرى، ولكل منها مقايضات:
- JSON مقابل XML: JSON أكثر إيجازًا وأسرع في التحليل. يدعم XML السمات ومساحات الأسماء والمخططات (XSD) لكنه أكثر إسهابًا بشكل كبير.
- JSON مقابل YAML: YAML أكثر قابلية للقراءة البشرية لملفات التكوين مع دعم التعليقات، لكن صياغته الحساسة للمسافات البادئة يمكن أن تكون عرضة للأخطاء. JSON أكثر قابلية للنقل ولديه تحقق أكثر صرامة.
- JSON مقابل CSV: CSV مسطح وجدولي فقط. يدعم JSON التسلسلات الهرمية المتداخلة وأنواع البيانات المختلطة.
- JSON مقابل Protocol Buffers: Protobuf أصغر وأسرع للاتصال من آلة إلى آلة لكنه يتطلب تعريف مخطط وليس قابلاً للقراءة البشرية.
لماذا يهيمن JSON على واجهات API للويب
تشرح عدة عوامل هيمنة JSON في تصميم واجهات API للويب:
- انتشار اللغة -- كل لغة رئيسية لديها محلل JSON أصلي أو مُعتنى به جيدًا، مما يزيل احتكاك التكامل.
- الدعم الأصلي للمتصفح --
JSON.parse()وJSON.stringify()في JavaScript تجعل JSON الخيار الطبيعي لتطبيقات الويب. - أدنى نطاق ترددي -- تنتج صياغة JSON خفيفة الوزن حمولات أصغر من XML، مما يقلل من زمن الانتقال وتكاليف النطاق الترددي.
- قابلية القراءة البشرية -- يمكن للمطورين فحص وتصحيح وكتابة بيانات JSON يدويًا بدون أدوات خاصة.
- مخطط مرن -- على عكس التنسيقات الصارمة مثل XML Schema أو Protocol Buffers، يستوعب JSON هياكل البيانات المتطورة بدون إعادة تجميع.
حالات استخدام JSON الشائعة
- REST و GraphQL APIs -- التنسيق القياسي لحمولات الطلب والاستجابة.
- ملفات التكوين -- تستخدمها أدوات مثل ESLint و Prettier و webpack و VS Code.
- قواعد بيانات NoSQL -- تخزن MongoDB و CouchDB البيانات كمستندات شبيهة بـ JSON.
- تسلسل البيانات -- هيكلة البيانات للتخزين أو النقل أو التخزين المؤقت.
- الاتصال في الوقت الفعلي -- رسائل JSON في تدفقات WebSocket و Webhooks.
- تجميع السجلات -- تستخدم أدوات التسجيل المهيكلة مثل Winston و Logstash و Datadog JSON لإدخالات سجلات قابلة للبحث والتصفية.
التحقق من صحة JSON وتنسيقه
عند العمل مع JSON، يكون التحقق من الصحة أمرًا بالغ الأهمية. خطأ صياغي واحد -- فاصلة زائدة، أو علامة اقتباس مفقودة، أو حرف غير مهروس -- يمكن أن يكسر تكامل API كامل أو ملف تكوين. الفحص اليدوي غير موثوق، خاصة لمستندات JSON الكبيرة.
كيفية التحقق من صحة JSON
يتبع التحقق من الصحة عادة هذه الخطوات:
- تحليل نص JSON باستخدام محلل قياسي مثل
JSON.parse()في JavaScript أو ما يعادله في اللغة التي تختارها. - التحقق من أخطاء الصياغة -- سيرمي المحلل خطأ عند أول مخالفة مع رسالة تشير إلى موقع المشكلة.
- إصلاح الأخطاء بشكل تكراري -- نظرًا لأن المحللات تتوقف عند الخطأ الأول، قم بإصلاحه وأعد التحقق حتى يجتاز المستند.
تجمع معظم أدوات JSON عبر الإنترنت بين التحقق من الصحة والتنسيق. الصق JSON الخاص بك، وتتحقق الأداة فورًا من الصياغة، وتبرز الأخطاء مع أرقام الأسطر والأعمدة، وتنتج مخرجات نظيفة بمسافات بادئة. هذا أسرع بكثير من التصحيح باستثناءات المحلل في الكود الخاص بك.
نصائح للعمل مع JSON
- تحقق دائمًا قبل الاستخدام -- لا تفترض أبدًا أن JSON المكتوب يدويًا صالح.
- استخدم linter -- أدوات مثل ESLint مع إضافات JSON تلتقط الأخطاء قبل أن تصل إلى الإنتاج.
- فضل مكتبات JSON -- قم بتوليد JSON باستخدام مكتبات التسلسل بدلاً من تسلسل النصوص لتجنب أخطاء الصياغة الدقيقة.
- عيّن رؤوس Content-Type صارمة -- بالنسبة لواجهات API، فرض
Content-Type: application/jsonلرفض الطلبات المشوهة مبكرًا.
استخدم مدقق ومنسق JSON مجاني عبر الإنترنت للتحقق فورًا من صياغة JSON الخاصة بك، وتحديد الأخطاء، وتنسيق بياناتك لقابلية القراءة. سواء كنت مبتدئًا تتعلم الأساسيات أو مطورًا متمرسًا يصحح API إنتاجي، تساعدك أداة منسق ومدقق JSON الخاصة بنا على العمل مع بيانات JSON بكفاءة.