تنسيق JSON والتحقق من صحته
نسّق ملف JSON بمسافات بادئة أو صغّره أو اكتفِ بفحصه، مع تحديد موضع الخطأ بالسطر والعمود، وتسمية المشكلات الصامتة صراحةً.
أفلت ملفاتك هنا
.json, .jsonc, .txt · حتى 100 م.ب
طريقة تنسيق JSON
- 1
إفلات ملف JSON
أضف ملفًا واحدًا أو حتى 20 ملفًا، حجم كل منها حتى 100 ميغابايت. وتُقبل أيضًا الملفات التي فيها تعليقات وفواصل زائدة بعد آخر عنصر.
- 2
اختيار التنسيق أو التصغير أو التحقق
التنسيق يرتب المستند بمسافات بادئة، والتصغير يحذف كل بايت يمكن الاستغناء عنه، والتحقق يكتفي بالإبلاغ عما يجده دون إنشاء ملف.
- 3
قراءة التقرير والتنزيل
تأتي الأخطاء مع رقم السطر والعمود، وتسرد التحذيرات المفاتيح المكررة وحالات فقدان الدقة في الأرقام. احفظ النتيجة حين تبدو سليمة.
خطأ بموضعه الدقيق، لا رسالة مبهمة
لا تتفق المتصفحات على طريقة الإبلاغ عن أخطاء التحليل: بعضها يذكر إزاحة بعدد الأحرف، وبعضها يكتفي بجملة، وتتغير الصياغة من إصدار إلى آخر. لهذا يقرأ JSON هنا محلل كُتب خصيصًا لهذه الأداة، وهو يحوّل أي فشل دائمًا إلى سطر وعمود. وفي ملف مُصدَّر يضم 40,000 كائن، معرفة أن الفاصلة الشاردة في السطر 8,421 هي الفرق بين إصلاح يستغرق دقيقتين وظهيرة كاملة تضيع.
مفاتيح مكررة وأرقام تتغير بصمت
هناك مشكلتان لا يكشفهما التحليل العادي أبدًا. الأولى مفتاح مكرر داخل الكائن نفسه: معظم المحللات تقبله، فتحتفظ بالقيمة الأخيرة ولا تقول شيئًا، أما هنا فيظهر رقما السطرين كلاهما. والثانية عدد صحيح أكبر من 2^53، مثل 9007199254740993، لا يمكن حفظه بدقة كرقم في JSON، فيعود أقل بواحد. والمعرّفات القادمة من واجهات API خارجية تصطدم بهذا باستمرار، لذلك يُبلَّغ عن كل قيمة حرفية من هذا النوع مع مسارها.
إدخال متسامح وإخراج صارم
تصل الملفات الحقيقية وفيها تعليقات // وتعليقات كتلية /* */ وفاصلة زائدة بعد آخر عنصر. كل ذلك مقروء، وكل ذلك يرفضه أي محلل ملتزم بالمعيار. الوضع المتساهل يقبل هذا كله ويخبرك بما حذفه، والإخراج دائمًا JSON عادي صالح. وللتأكد من أن الملف مطابق للمعيار أصلًا، انتقل إلى الإدخال الصارم.
بياناتك تبقى في علامة التبويب
ملفات تفريغ API وملفات الإعدادات المُصدَّرة تحتوي في الغالب على رموز وصول (tokens) وعناوين وسجلات عملاء، لذلك لا يُرسل شيء منها إلى أي مكان. يُقرأ الملف ويُحلَّل ويُفحص وتُعاد كتابته داخل متصفحك، وتُعالج الملفات الكبيرة في خيط عامل منفصل (worker). لا رفع، ولا حساب، ولا نسخة تبقى بعد إغلاق علامة التبويب.
الأسئلة الشائعة
لماذا يمر ملف JSON الذي فيه تعليقات دون خطأ؟
لأن وضع الإدخال الافتراضي متساهل: تُقبل التعليقات بنوعيها // و/* */ والفواصل الزائدة، ويُبلَّغ عنها كتحذيرات، ولا تظهر في الإخراج. وهذا هو الخيار العملي لملفات الإعدادات المعدلة يدويًا. وإذا احتجت تحديدًا إلى إثبات أن الملف JSON قياسي، فبدّل وضع الإدخال إلى الصارم، فتصير الأشياء نفسها أخطاء.
ماذا يعني خطأ «رمز غير متوقع» (unexpected token)؟
يعني أن المحلل وجد حرفًا لا يمكنه استخدامه في موضعه. الأسباب المعتادة فاصلة ناقصة أو زائدة، أو علامة تنصيص مفردة بدل المزدوجة، أو مفتاح بلا علامتي تنصيص، أو قيمة تنتهي قبل أوانها. تذكر الرسالة السطر والعمود، فابدأ القراءة قبل الموضع المذكور برمز أو رمزين.
كيف أحذف كل المسافات البادئة؟
اختر التصغير. تُحذف كل مسافة ومسافة جدولة (Tab) وسطر جديد يمكن الاستغناء عنه، وتصير النتيجة سطرًا واحدًا أصغر عادةً من النسخة المنسقة بنسبة تتراوح بين 15 و30 بالمئة. البيانات بعد التحليل مطابقة تمامًا، لذلك يحل الملف المصغر محل الملف المنسق في أي مكان كان يعمل فيه.
ما المقصود بفقدان دقة الأرقام؟
الأرقام في JSON أرقام بفاصلة عائمة، لذلك لا يمكن تمثيل كل الأعداد الصحيحة الأكبر من 2^53. أدخل 9007199254740993 فتعود إليك 9007199254740992. والضحايا المعتادون هم المعرّفات الطويلة القادمة من أنظمة خارجية. تُعلَّم كل قيمة حرفية فيها هذه المشكلة مع مسارها، والحل الدائم أن ترسل واجهة API التي تنتجها هذه المعرّفات كنصوص (strings).
هل يمكنني ترتيب المفاتيح أبجديًا؟
نعم، الترتيب خيار يُفعَّل أو يُعطَّل، ويُطبَّق على كل مستويات التداخل. وهو مفيد أكثر ما يكون قبل مقارنة ملفين مُصدَّرين، لأنه يزيل فروق الترتيب التي لا معنى لها، ولا يترك في المقارنة (diff) إلا التغييرات الحقيقية. ترتيب المفاتيح لا دلالة له في JSON، فلا يضيع شيء بالترتيب.
ما الذي يميز وضع التحقق؟
يتوقف بعد الفحص. تحصل على حكم نهائي وقائمة كاملة بالأخطاء والتحذيرات، ولا يُنشأ ملف للتنزيل. استخدمه حين تحتاج فقط إلى معرفة هل الملف سليم، مثل ناتج عملية بناء أو استجابة API توشك على نشرها، دون نية لإعادة كتابته.
هل يُرفع ملف JSON إلى أي مكان؟
لا. التحليل والفحص وإعادة الكتابة، كلها تجري في علامة التبويب في متصفحك بشيفرة تصل مع الصفحة نفسها. لا يوجد خادم يستقبل النص، ولا يُسجَّل شيء، ولا يبقى شيء بعد إغلاق علامة التبويب.