منسّق JSON

نسّق JSON أو صغّره وشاهد بالضبط أين يفشل الإدخال غير الصالح.

مسافة بادئة
الإدخال
الإخراج

سيظهر الإخراج هنا

ما الذي يفعله منسّق JSON هذا

‏JSON (JavaScript Object Notation) هو الصيغة الأكثر شيوعًا لنقل البيانات المهيكلة بين البرامج — استجابات واجهات البرمجة، وملفات الإعداد، وأسطر السجلات وغيرها. صُمّم ليكون مضغوطًا، وهو ما يجعله أيضًا صعب القراءة عندما تتداخل الكائنات عدة مستويات أو تصل في سطر واحد. تأخذ هذه الأداة أي JSON تلصقه وتعيد كتابته بطريقتين: مُجمَّلًا، بمسافات بادئة متسقة كي تتضح البنية بنظرة واحدة، أو مُصغَّرًا، خاليًا من كل مسافة اختيارية ليكون أصغر ما يمكن عند الإرسال.

كما يتحقّق من الصحة أثناء التنسيق. ولأنه يحلّل النص قبل إعادة تسلسله، فإن JSON غير الصالح لا ينتج مخرجات مضللة أبدًا — بل تحصل على السطر والعمود الدقيقين حيث فشل التحليل، لتنتقل مباشرة إلى المشكلة.

التجميل مقابل التصغير — متى تستخدم كلًا منهما

للوضعين هدفان متعاكسان، ومعظم سير العمل يستخدم كليهما في مراحل مختلفة:

  • جمّل عندما تقرأ أو تصحّح الأخطاء: فحص استجابة واجهة برمجة، أو مقارنة حمولتين، أو مراجعة ملف إعداد في طلب سحب. المسافات البادئة تحوّل جدار النص إلى شجرة يسهل تصفحها.
  • صغّر عندما ترسل: تضمين JSON داخل HTML، أو تخزينه في ملف تعريف ارتباط أو ذاكرة تخزين مؤقت، أو إرساله في جسم طلب حيث يهمّ كل بايت. JSON المصغَّر هو نفس البيانات تمامًا، لكن بلا مسافات.

محدِّد المسافة البادئة (مسافتان، أو 4 مسافات، أو Tab) يؤثر فقط على المخرجات المجمَّلة. المسافتان هما العُرف الأكثر شيوعًا في JavaScript وأدوات الويب؛ وأربع مسافات أو علامات جدولة تناسب الفرق التي تفضّلها. أيًا كان اختيارك، تبقى النتيجة JSON صالحًا — فالمسافة البادئة شكلية بحتة.

قراءة أخطاء التحقق

عندما يكون JSON غير صالح، تُبلغ الأداة عن سطر وعمود أول مشكلة بدل رسالة «غير صالح» الغامضة. تختلف رسائل أخطاء المحركات بين المتصفحات وغالبًا ما تُغفل الموضع، لذا يُحسب الموقع بشكل مستقل ويشير إلى نقطة معقولة للبدء منها. أصلح الخطأ الأول ثم أعد الفحص — فحرف واحد في غير موضعه يتسبّب غالبًا في عدة مشكلات ظاهرية.

أخطاء JSON الشائعة

يُعدّ JSON أكثر صرامة من كائنات JavaScript الحرفية التي يشبهها. وهذه هي الأخطاء التي توقع الناس أكثر من غيرها:

  • الفواصل النهائية: الفاصلة بعد آخر عنصر في كائن أو مصفوفة صالحة في JavaScript لكنها غير صالحة في JSON.
  • علامات الاقتباس المفردة: يجب أن تستخدم سلاسل JSON ومفاتيحه علامات اقتباس مزدوجة. 'قيمة' غير صالحة؛ "قيمة" صحيحة.
  • مفاتيح بلا علامات اقتباس: كل مفتاح كائن يجب أن يكون سلسلة بين علامتي اقتباس، لذا يجب أن يتحوّل { name: "x" } إلى { "name": "x" }.
  • التعليقات: لا يملك JSON صياغة للتعليقات. الرمزان // و/* */ سيسبّبان خطأ تحليل.
  • أرقام خاصة: NaN وInfinity و-Infinity ليست أرقام JSON صالحة.
  • علامات اقتباس خاطئة: «علامات الاقتباس الذكية» المنسوخة من معالج نصوص تبدو كعلامات اقتباس لكنها أحرف مختلفة ولن تُحلَّل.

الأسئلة الشائعة

هل يُرسَل JSON الخاص بي إلى خادم؟
لا. التحليل والتحقق والتنسيق تجري كلها في متصفحك باستخدام JavaScript. لا شيء تلصقه يُرفَع أو يُخزَّن أو يُسجَّل، لذا فاستخدامه آمن مع الحمولات الحساسة.
هل يغيّر التنسيق بياناتي؟
لا. التجميل والتصغير يضيفان أو يزيلان المسافات بين الرموز فقط. المفاتيح والقيم والأرقام والبنية متطابقة — يتغيّر الشكل فقط.
لماذا يعيد ترتيب أرقامي أو تنسيقها؟
تحلّل الأداة JSON إلى قيم حقيقية ثم تعيد تسلسلها، فتُطبَّع الأرقام إلى صورتها المعيارية (مثلًا 1e3 تصبح 1000). القيمة لا تتغيّر؛ يصبح تمثيلها النصي قياسيًا فقط.
هل يستطيع التعامل مع ملفات JSON كبيرة جدًا؟
يستطيع التعامل مع حمولات كبيرة، لكن بما أن كل شيء يعمل في المتصفح، فقد تكون الملفات الضخمة جدًا (عشرات الميغابايتات) بطيئة أو تبلغ حدود الذاكرة حسب جهازك.
هل يحافظ على ترتيب مفاتيح الكائن؟
نعم. يُحفظ ترتيب المفاتيح تمامًا كما يظهر في مدخلاتك — لا تفرز الأداة المفاتيح.
ما الفرق بين JSON وكائن JavaScript؟
‏JSON صيغة نصية لتبادل البيانات؛ أما كائن JavaScript فقيمة في الذاكرة. JSON أكثر صرامة: يشترط مفاتيح وسلاسل بين علامتي اقتباس مزدوجتين، ويمنع الفواصل النهائية والتعليقات، ولا يسمح إلا بمجموعة ثابتة من أنواع القيم (سلاسل، أرقام، قيم منطقية، null، مصفوفات وكائنات).
هل يمكنني تنسيق JSON5 أو JSONC (‏JSON مع تعليقات)؟
لا. تتحقّق هذه الأداة من JSON القياسي الصارم. ويضيف JSON5 وJSONC تعليقات وتسهيلات أخرى ليست جزءًا من مواصفة JSON، لذا سيتم الإبلاغ عنها كأخطاء.