tigtools

مدقق JSON

الصق JSON للتحقق من صحة صياغته وفق معيار JSON. تُحدَّد مواضع الأخطاء بمؤشر وتفسير واضح.

تعمل في متصفحك لا يلزم التسجيل

ستظهر النتيجة هنا فور لصق JSON.

كيفية الاستخدام

  1. الصق JSON في المربع، أو افتح ملفًا، أو اضغط على «جرّب مثالًا» لعرض تقرير بالأخطاء.
  2. اقرأ النتيجة: رسالة خضراء عند صحة JSON، أو أول خطأ مع رقم السطر والعمود ومؤشر يحدد موضع المشكلة.
  3. أصلح الخطأ وفقًا للتلميح، ثم تحقّق مجددًا؛ فالنتيجة تتحدث أثناء الكتابة.
  4. إذا كان JSON صحيحًا، فراجع الإحصاءات: نوع القيمة الجذرية، وعدد المفاتيح، وعمق التداخل، والحجم بالبايت.

كيف تعمل الأداة

يتحقق المدقق من توافق الصياغة مع معيار JSON ‏(RFC 8259 / ECMA-404) باستخدام محلل JSON المدمج في المتصفح. لذلك، فإن المستند الذي يجتاز هذا الفحص تقبله الدالة JSON.parse في JavaScript والمحللات المتوافقة مع المعايير في اللغات الأخرى. عند فشل التحليل، يفحص مدقق صارم أُعد لهذه الأداة النص مرة واحدة لتحديد أول خطأ ورقم السطر والعمود بدقة، ثم يعرض السطر مع علامة ^ أسفل موضع المشكلة.

تركز الإرشادات على الأخطاء الشائعة عند كتابة JSON يدويًا أو نسخه من JavaScript: الفاصلة بعد العنصر الأخير، والسلاسل الموضوعة بين علامتي اقتباس مفردتين، والمفاتيح غير المحاطة بعلامتي اقتباس، والتعليقات من النمط // أو /* */، والقيم مثل NaN أو Infinity أو undefined، وفواصل الأسطر المباشرة داخل السلاسل، ولصق مستندي JSON متتاليين (كما في ملفات JSON Lines). يُعرض الخطأ الأول فقط، لأن خطأً واحدًا غالبًا ما يربك كل ما يليه.

تفحص الأداة الصياغة فقط. ولا تتحقق من مطابقتها لمخطط JSON، لذا لا يمكنها تحديد ما إذا كان حقل مطلوب مفقودًا. كما أنها لا تحذر من المفاتيح المكررة: فالمعيار يسمح بها، وتحتفظ معظم المحللات بالقيمة الأخيرة. تحصي الإحصاءات المفاتيح في كل كائن على جميع المستويات؛ ويكون العمق 1 للكائن أو المصفوفة المسطحة، ويزداد بمقدار واحد مع كل مستوى من مستويات التداخل.

أمثلة

إعدادات منسوخة من JavaScript

يفشل {name: 'demo', debug: true,} في السطر 1، العمود 2، مع الرسالة «يجب وضع مفاتيح الكائن بين علامتي اقتباس مزدوجتين». بعد وضع المفتاح بين علامتي اقتباس، تشير عملية الفحص التالية إلى السلسلة الموضوعة بين علامتي اقتباس مفردتين، ثم إلى الفاصلة الزائدة.

ملف سجل يحتوي على كائن واحد في كل سطر

عند لصق سطرين مثل {"id":1} و {"id":2}، تظهر رسالة «هناك محتوى إضافي بعد نهاية قيمة JSON» عند السطر 2. كل سطر صالح كـ JSON بمفرده (JSON Lines)، لكن يجب وضعهما معًا بين [ ] وفصلهما بفاصلة.

التحقق من بيانات API

يجتاز رد بحجم 2 MB الفحص في لحظة، ويعرض نوع الجذر: مصفوفة، و1,500 عنصرًا في المستوى الأعلى، وعمق تداخل يبلغ 4؛ ما يوفر فحصًا سريعًا للبيانات قبل كتابة التعليمات البرمجية للتعامل معها.

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

هل تتحقق الأداة من صحة البيانات وفق JSON Schema؟

لا. تتحقق الأداة من أن النص JSON سليم البنية. أما التحقق من الحقول المطلوبة أو الأنواع أو التنسيقات، فيتطلب أداة للتحقق من JSON Schema، وهذا غير متوفر هنا.

لماذا يظهر خطأ واحد فقط؟

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

هل تكون التعليقات أو الفواصل الختامية صحيحة أحيانًا؟

لا، ليس في JSON. تسمح تنسيقات مثل JSON5 وJSONC (المستخدمة في ملفات الإعدادات لبعض المحررات) بالتعليقات والفواصل الختامية، لكن محلّلات JSON القياسية ترفضها، لذا تظهر هنا كأخطاء.

هل تُعد قيمة مفردة مثل 42 أو "hello" بيانات JSON صحيحة؟

نعم. منذ RFC 7159، يمكن أن تكون أي قيمة JSON هي القيمة الجذرية، وليس الكائنات والمصفوفات فقط. لكن بعض الأدوات وواجهات API الأقدم لا تزال تتوقع كائنًا أو مصفوفة في المستوى الأعلى.

لماذا قد يختلف رقم العمود عن الرقم في المحرر؟

يُحتسب رقم العمود بوحدات UTF-16، بالطريقة نفسها التي تحتسب بها JavaScript طول السلسلة النصية. تشغل الرموز التعبيرية وبعض المحارف النادرة وحدتين، بينما يشغل الجدول عمودًا واحدًا، مع أن المحررات قد تعرضه بعرض أكبر.

الخصوصية

يُجرى التحقق بالكامل في متصفحك. لا تُرفع بيانات JSON التي تلصقها أو تفتحها، ولا تُخزّن أو تُضمّن في بيانات التحليلات.