بيانات JSON (.json)

RFC قياسي

تدوين كائنات JavaScript (JSON) تنسيق نصي خفيف وسهل القراءة لتبادل البيانات. وهو مستقل تماماً عن لغات البرمجة ويُستخدم على نطاق واسع في واجهات برمجة تطبيقات الويب.

تحويل JSON إلى HTML

محول مجاني داخل المتصفح للتحويل من JSON إلى HTML. قم بتحويل الملفات فوراً على جهازك.

ضغط JSON عبر الإنترنت

خاص - لا تغادر الملفات جهازك أبدًا

فحص البيانات الوصفية

تتعرف أنظمة التشغيل ومحللات الملفات على ملفات JSON من خلال فحص تسلسل البايت الثنائي البادئ:

اختر الملفات أو أسقطها هنا

خاص - لا تغادر الملفات جهازك أبدًا

أو الصق Ctrl+V
ضمان الخصوصية وعدم الإرسال عبر الشبكة: صفر بايت يتم رفعه إلى خوادم خارجية. تمت كل عمليات المعالجة محلياً في صندوق الحماية (Sandbox) الخاص بمتصفحك.

توقيع رأس الملف على مستوى البايت (Magic Bytes)

تتعرف أنظمة التشغيل ومحللات الملفات على ملفات JSON من خلال فحص تسلسل البايت الثنائي البادئ:

التوقيع الست عشري (الإزاحة 0):

7B أو 5B

تمثيل ASCII: { أو [

التوحيد القياسي: RFC 8259 / ECMA-404 / ISO/IEC 21778

المواصفات الفنية

هيكلية الحاويةتنسيق تبادل بيانات خفيف الوزن، يعتمد على النصوص، ومستقل عن لغة البرمجة
الضغطيمكن ضغط نصوص JSON باستخدام Gzip أو Brotli أو Zstandard (وتصل نسبة الضغط عادةً إلى 80%-90%).
ترتيب البايتات (Endianness)Unicode بترميز UTF-8 (يُنصح بعدم تضمين علامة ترتيب البايتات BOM)
مساحات الألوانلا ينطبق
القنوات والبنيةستة أنواع بيانات أساسية: كائن، مصفوفة، نص، رقم، قيمة منطقية (boolean)، وقيمة فارغة (null)
الحد الأقصى للأبعادلا حدود محددة؛ ويقتصر الحجم على ذاكرة المحلل وأقصى طول للسلسلة النصية.
الشفافيةلا ينطبق
البث والتحميل التدرجيتتيح NDJSON (JSON المفصول بأسطر جديدة) / أسطر JSON معالجة التدفق التقدمي

مصفوفة المقارنة التقنية: JSON مقابل المنافسين

السمة التقنيةJSON (الحالي)YAMLXMLProtocol Buffers
تعقيد بناء الجملةبسيط (6 أنواع، وصياغة صارمة)عالي (يعتمد على المسافات البادئة، مواصفات معقدة)عالي (وسوم إغلاق مطولة، مساحات أسماء)تنسيق نقل ثنائي محدد بالمخطط
سرعة التحليلسريع للغاية في جميع اللغات الحديثةبطيء (تحليل المسافات البادئة المعقدة)متوسط إلى بطيء (بناء DOM ثقيل)سريع للغاية (إلغاء تسلسل ثنائي بدون نسخ)
دعم التعليقاتلا (استُبعدت عمداً لتجنب تزايد البيانات الوصفية)نعم (تعليقات #)نعم (تعليقات بصيغة <!-- -->)نعم في ملفات proto.
حجم حمولة الشبكةنص مدمج (نسبة ضغط gzip عالية جداً)نص مدمجنص مطول (تكرار ثقيل للوسوم)ثنائي مدمج للغاية

أنماط التلف الشائعة ودليل الاسترداد بالنظام الست عشري

SyntaxError: رمز غير متوقع , في JSON عند الموضع X.

السبب الجذري: فاصلة لاحقة بعد العنصر الأخير في مصفوفة أو كائن، وهو أمر محظور تماماً في مواصفات RFC 8259 لـ JSON.

الاسترداد: أزل الفواصل الزائدة بعد آخر عنصر في الكائنات والمصفوفات قبل تمرير النص إلى JSON.parse().

SyntaxError: رمز غير متوقع ' في JSON.

السبب الجذري: السلاسل النصية أو المفاتيح محاطة بعلامات اقتباس مفردة ('') بدلاً من علامات الاقتباس المزدوجة ("").

الاسترداد: استبدل علامات الاقتباس المفردة حول السلاسل النصية والمفاتيح بعلامات اقتباس مزدوجة.

تحليل الأمان ومتجهات الهجوم على المحلّل

JSON تنسيق نصي لا ينفّذ التعليمات البرمجية مباشرةً، لكن تحليل بيانات JSON غير الموثوقة قد يؤدي إلى تلويث النماذج الأولية أو هجمات ReDoS أو استنزاف الذاكرة.

ناقلات الهجوم المعروفة

  • تلويث النماذج الأولية: قد تعدّل مفاتيح مثل ‎__proto__‎ أو ‎constructor‎ الكائن Object.prototype في تطبيقات JavaScript.
  • قد تتسبب البنى المتداخلة بعمق (مثل 10,000 قوس فتح) في تجاوز سعة المكدس وحجب الخدمة.
  • فقدان دقة الأعداد: تفقد أعداد JavaScript الأكبر من 2^53 - 1 (9,007,199,254,740,991) دقتها بصمت.

أفضل الممارسات الدفاعية: لا تستخدم eval() لتقييم JSON مطلقاً. استخدم JSON.parse()، واستبعد خصائص ‎__proto__‎ عند دمج الكائنات تكرارياً.

الأصول التاريخية والمحطات الرئيسية

2017وحّد RFC 8259 ترميز UTF-8 بوصفه ترميز الأحرف الإلزامي الوحيد في JSON.
2013تحدد ECMA-404 صيغة JSON، التي تستخدمها لغات ومنصات برمجية عديدة.
2001وضع دوغلاس كروكفورد مواصفة JSON لتمكين تبادل البيانات دون حالة بين المتصفح والخادم.

المزايا الرئيسية والإيجابيات

  • بنية نصية مقروءة للبشر، وموصوفة ذاتياً، وموجزة.
  • دعم تحليل أصلي مدمج في محركات جافا سكريبت (JSON.parse) وكل لغة برمجة رئيسية.
  • المواصفات الصارمة تمنع تنفيذ التعليمات البرمجية الاعتباطية.

القيود الفنية والسلبيات

  • لا يوجد دعم للتعليقات، أو الفواصل اللاحقة، أو المراجع الدائرية للكائنات.
  • لا توجد أنواع ثنائية أصلية (يجب ترميز البيانات الثنائية بـ base64، مما يزيد الحجم بنسبة 33%).
  • تسلسل غير فعال مقارنة بالتنسيقات الثنائية مثل Protocol Buffers أو MessagePack.

معلومات تقنية طريفة

  • أضاف دوغلاس كروكفورد إلى أدوات JSON الأصلية JSMin بنداً في الترخيص يقول: «يجب استخدام البرنامج للخير لا للشر».
  • JSON مجموعة فرعية صارمة من صياغة JavaScript، لكن حتى ES2019 كانت المحارف الخام غير المهربة U+2028 وU+2029 صالحة في JSON وغير صالحة داخل سلاسل JavaScript.
  • اكتشف دوغلاس كروكفورد أن المتصفحات المبكرة تستطيع تحويل JSON مباشرةً إلى كائنات باستخدام eval() الأصلي في JavaScript، قبل توحيد واجهات JSON.parse() في ECMAScript 5.

الأسئلة التقنية المتكررة

لماذا لا يسمح تنسيق JSON بالتعليقات؟

لا تسمح قواعد JSON النحوية بالتعليقات. وقد تختلف التطبيقات في تعاملها مع الامتدادات والبيانات الخاصة بالتطبيق، لذا لا يضمن التنسيق وحده قابلية التشغيل البيني.

كيف تخزن أعداداً صحيحة من 64 بت في JSON دون فقدان الدقة؟

نوع Number الأصلي في JavaScript هو عدد عشري عائم مزدوج الدقة وفق معيار IEEE 754، ولا يمثّل بدقة إلا الأعداد الصحيحة حتى 2^53 - 1. لذا يجب تسلسل الأعداد الصحيحة ذات 64 بت (مثل معرّفات قواعد البيانات والطوابع الزمنية) كسلاسل نصية في JSON، مثل «1234567890123456789».

ما الفرق بين JSON و NDJSON / أسطر JSON؟

تضع JSON القياسية كامل البيانات في كائن جذري واحد أو مصفوفة واحدة، ما يتطلب من المحللات تحميل النص كله قبل معالجته. أما NDJSON (JSON المفصولة بأسطر جديدة) فتفصل سجلات JSON الصالحة بعضها عن بعض بمحارف سطر جديد (\n)، ما يتيح معالجة مجموعات بيانات ضخمة بحجم عدة غيغابايتات سطراً بعد سطر بكفاءة في الذاكرة.

أزواج تحويل JSON ذات الصلة

JSON إلى HTML

يؤدي تحويل بيانات JSON إلى مصدر HTML إلى تحويل أزواج المفتاح والقيمة المهيكلة الخام إلى مستندات ويب قابلة للقراءة البشرية وجاهزة لعرض المتصفح.

HTML إلى JSON

يؤدي تحويل مصدر HTML إلى بيانات JSON إلى تحويل مستندات الويب القابلة للقراءة البشرية إلى أزواج مفتاح وقيمة مهيكلة للمعالجة البرمجية وإدخالها إلى واجهة برمجة التطبيقات.

SQL إلى JSON

يؤدي تحويل نص تفريغ SQL إلى تصدير بيانات JSON إلى تحويل جداول قواعد البيانات العلائقية الصلبة إلى كائنات مرنة ومتداخلة لتطبيقات الويب الحديثة.

JSON إلى SQLITE

يسمح تحويل ملفات نصوص JSON غير المنظمة إلى قواعد بيانات SQLite علائقية منظمة بالفهرسة والاستعلام السريع لسجلات البيانات الكبيرة.

ASE إلى JSON

يحوّل تحويل ملفات Adobe Swatch Exchange إلى هياكل JSON للألوان لوحات التصميم الثنائية إلى كائنات نصية مقروءة لتطبيقات الويب الحديثة.

JSON إلى ASE

يربط تحويل بيانات JSON النصية للألوان إلى عينات Adobe ASE الثنائية بين رموز التصميم المستخدمة على الويب وتطبيقات التخطيط المكتبي الاحترافية.

GPL إلى JSON

يؤدي تحويل ملفات نصوص لوحة ألوان GIMP إلى هياكل JSON للألوان إلى تمكين تطبيقات الويب من قراءة عينات الألوان مباشرة دون الحاجة إلى نصوص تحليل معقدة.

JSON إلى CSS

يؤدي تحويل ملفات JSON للألوان المنظمة إلى متغيرات CSS إلى تحويل كائنات البيانات الخام إلى خصائص تنسيق أصلية لمواقع الويب.