انتقل إلى محتوى الدرس
الدرس 135
تاريخ النشر: تاريخ التحديث:
دورة جافا سكريبت

أنواع البيانات المسموحة في JSONJSON Data Types شرح الأنواع الستة المسموحة بـ JSON، وضوابط كتابة الأرقام والنصوص، والقيم المنطقية والكائنات الفرعية

تعرف على أنواع البيانات الستة المسموحة في JSON وضوابط كتابة الأرقام والنصوص وحماية المعرفات الرقمية الكبيرة وسلوك الأنواع غير المدعومة كالدوال وundefined.
أقسام الدرس
4
الأمثلة
2
اللغة
العربية
المشاهدات
2,796
محتوى الدرس
في هذا الدرس 4تصفّح المواضيع

لكي يتوافق تنسيق JSON بسلاسة مع مختلف لغات البرمجة وقواعد البيانات حول العالم، حصر المعيار RFC 8259 جميع القيم المسموحة داخل أي مستند JSON في ستة أنواع بيانات فقط:

  1. النص (String): سلسلة محارف Unicode محاطة بتنصيص مزدوج مثل "Cairo".
  2. الرقم (Number): عدد صحيح أو عشري موجب أو سالب مثل 150 أو -3.75.
  3. الكائن (Object): مجموعة أزواج مفتاح وقيمة بين قوسين معقوفين {"id": 1}.
  4. المصفوفة (Array): قائمة مرتبة محصورة بين قوسين مربعين [10, 20, 30].
  5. المنطقي (Boolean): القيمتان true أو false بالحروف الصغيرة.
  6. الفارغ (Null): الكلمة null بالحروف الصغيرة لتمثيل غياب القيمة عمداً.
مخطط الأنواع الستة المعتمدة في JSON مقابل الأنواع البرمجية غير المدعومة

تخضع كتابة الأرقام والنصوص في JSON لضوابط أدق من تلك المسموحة في شيفرة JavaScript العادية:

فئة البياناتالصياغة المقبولة في JSONالصياغة المرفوضة (تُطلق SyntaxError)
الأعداد والكسور0، 42، -12.5، 1.5e4الأصفار البادئة (07)، الكسر بلا صفر (.5)، الست عشري (0xFF)
القيم الرياضية الخاصةتتحول عند التصدير إلى nullكتابة NaN أو Infinity أو -Infinity
محارف الهروب النصية\"، \\، \n، \t، \uXXXXكسر السطر الخام داخل النص أو صيغة \x41
JavaScript
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().
JavaScript
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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 2 مفهومةأول بطاقة، أول خطوة
01 ISO ISO
International Organization for Standardization
المنظمة الدولية للمعايير صاحبة معيار ISO-8601 لتمثيل التواريخ نصياً داخل بيانات JSON.
للمراجعة
02 IEEE IEEE
Institute of Electrical and Electronics Engineers
معهد مهندسي الكهرباء والإلكترونيات واضع معيار IEEE-754 للأعداد العشرية المستخدمة في JavaScript.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. غيّر الرقم 2.5e2 إلى -4.2e3 في محرر التجربة الأول وتحقق من تحويله بنجاح إلى العدد -4200.

  2. أضف وسم "css" إلى tagsSet في محرر التجربة الثاني وتأكد من حفظ جميع القيم الفريدة داخل مصفوفة JSON.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

10أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي10 أسئلة تنتظرك
01

كم عدد أنواع البيانات المسموحة رسمياً في معيار JSON القياسي؟

02

أي قيمة مما يلي ليست من أنواع JSON الصالحة وتسبب SyntaxError إذا كُتبت مباشرة في نص JSON؟

03

يُسمح بكتابة القيمتين NaN أو Infinity مباشرةً كأرقام داخل ملف JSON قياسي.

04

ما الناتج النصي الذي تُخرجه الدالة JSON.stringify({ ratio: Infinity })؟

05

كتابة أرقام تبدأ بأصفار بادئة مثل 007 مرفوضة في JSON وتُطلق خطأ SyntaxError.

06

كيف يجب كتابة حالة الأحرف للقيم المنطقية والقيمة الفارغة في JSON؟

07

كيف يُنصح بإرسال المعرفات الرقمية الضخمة التي تتجاوز Number.MAX_SAFE_INTEGER داخل JSON لحمايتها من فقدان الدقة؟

08

ماذا يحدث عند تمرير كائن Set مباشرة إلى JSON.stringify(new Set([1, 2])) دون تحويله أولاً بـ Array.from؟

09

تمرير قيمة من نوع BigInt مباشرة إلى JSON.stringify دون تحويلها لنص يُطلق خطأ TypeError.

10

كيف تمثل الدالة JSON.stringify كائن التاريخ Date افتراضياً عند تصديره؟