في هذا الدرس 4تصفّح المواضيع
لكي يتوافق تنسيق JSON بسلاسة مع مختلف لغات البرمجة وقواعد البيانات حول العالم، حصر المعيار RFC 8259 جميع القيم المسموحة داخل أي مستند JSON في ستة أنواع بيانات فقط:
- النص (String): سلسلة محارف Unicode محاطة بتنصيص مزدوج مثل
"Cairo". - الرقم (Number): عدد صحيح أو عشري موجب أو سالب مثل
150أو-3.75. - الكائن (Object): مجموعة أزواج مفتاح وقيمة بين قوسين معقوفين
{"id": 1}. - المصفوفة (Array): قائمة مرتبة محصورة بين قوسين مربعين
[10, 20, 30]. - المنطقي (Boolean): القيمتان
trueأوfalseبالحروف الصغيرة. - الفارغ (Null): الكلمة
nullبالحروف الصغيرة لتمثيل غياب القيمة عمداً.
تخضع كتابة الأرقام والنصوص في JSON لضوابط أدق من تلك المسموحة في شيفرة JavaScript العادية:
| فئة البيانات | الصياغة المقبولة في JSON | الصياغة المرفوضة (تُطلق SyntaxError) |
|---|---|---|
| الأعداد والكسور | 0، 42، -12.5، 1.5e4 | الأصفار البادئة (07)، الكسر بلا صفر (.5)، الست عشري (0xFF) |
| القيم الرياضية الخاصة | تتحول عند التصدير إلى null | كتابة NaN أو Infinity أو -Infinity |
| محارف الهروب النصية | \"، \\، \n، \t، \uXXXX | كسر السطر الخام داخل النص أو صيغة \x41 |
const payload = '{"quote":"Say \\"Hi\\"","rate":2.5e2,"badMath":null}';
const item = JSON.parse(payload);
document.getElementById('num-out').textContent =
item.quote + ' | rate=' + item.rate + ' | badMath=' + item.badMath;
تُكتب القيم المنطقية (true وfalse) والقيمة الفارغة (null) بالأحرف الإنجليزية الصغيرة حصراً دون علامات تنصيص؛ أما الصيغ الكبيرة مثل True أو NULL الشائعة في لغات أخرى فتفشل فوراً عند التحليل.
ويمكن للكائنات والمصفوفات التداخل بحرية لتمثيل السجلات الواقعية الغنية كملف المستخدم وعنوان الشحن وقائمة الصلاحيات.
لأن JSON ينقل البيانات الصافية لا السلوك البرمجي، فإن عدة أنواع معروفة في JavaScript غير مدعومة في معيار JSON:
FunctionوundefinedوSymbol: تُحذف بصمت إذا كانت خصائص داخل كائن، أو تتحول إلىnullإذا وقعت داخل مصفوفة عند التصدير.Date: يتحول تلقائياً إلى نص تاريخ قياسي بصيغة ISO-8601.MapوSet: يتحولان إلى كائن فارغ{}ما لم تحولهما مسبقاً عبرObject.fromEntries()أوArray.from()!BigInt: يطلق خطأTypeErrorعند التصدير ما لم يُحول إلى نص صريح عبرString().
const tagsSet = new Set(['html', 'js']);
const safePayload = {
id: '9007199254740999',
tags: Array.from(tagsSet),
};
document.getElementById('forbid-out').textContent = JSON.stringify(safePayload);
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس الأنواع الستة الوحيدة المسموحة في JSON، وضوابط كتابة الأرقام وتهريب النصوص، وحفظ المعرفات الضخمة كنصوص، وكيفية التعامل مع الأنواع غير المدعومة مثل undefined وSet. الخطوة التالية: انتقل إلى درس «تحليل نصوص JSON بالدالة JSON parse» للتعمق في التحليل الآمن ودالة reviver.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات3
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 JSON Primitive Types الأنواع الأولية في JSON
- الأنواع الأربعة المفردة في JSON وهي النصوص المزدوجة التنصيص والأرقام المحدودة والمنطق وnull.
- للمراجعة
- 02 MAX_SAFE_INTEGER حد الدقة الرقمية الآمن
- أكبر عدد صحيح تمثله JavaScript بدقة تامة؛ لذا تُرسل المعرفات الأكبر منه كنصوص في JSON.
- للمراجعة
- 03 ISO-8601 Date String نص التاريخ القياسي ISO-8601
- صيغة نصية دولية للتاريخ والوقت تنتج تلقائياً عند تحويل كائن Date عبر JSON.stringify.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات2
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 ISO ISO
- International Organization for Standardization
- المنظمة الدولية للمعايير صاحبة معيار ISO-8601 لتمثيل التواريخ نصياً داخل بيانات JSON.
- للمراجعة
- 02 IEEE IEEE
- Institute of Electrical and Electronics Engineers
- معهد مهندسي الكهرباء والإلكترونيات واضع معيار IEEE-754 للأعداد العشرية المستخدمة في JavaScript.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
غيّر الرقم 2.5e2 إلى -4.2e3 في محرر التجربة الأول وتحقق من تحويله بنجاح إلى العدد -4200.
-
أضف وسم "css" إلى tagsSet في محرر التجربة الثاني وتأكد من حفظ جميع القيم الفريدة داخل مصفوفة JSON.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.