FreeToGenerate.com

مجاني 100% · بلا تسجيل · لا شيء يغادر متصفحك

الصق JSON في الصندوق أعلاه لترى النتيجة هنا.

كل شيء يُعالَج داخل متصفحك، ولا يُرسل شيء إلى أي خادم، ولا يُحفظ شيء.

متوفر أيضًا بلغات أخرى: English · Español · Português · Français

أداة تنسيق JSON والتحقق من صحته

نسّق أي JSON وتحقق من صحته داخل متصفحك، بدقة أرقام كاملة ورسائل خطأ تسمّي المشكلة بدل موضعها فقط.

ما هو منسّق JSON؟

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

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

كيف تستعملها

  1. الصق JSON في الصندوق وسيبدأ التحقق وإعادة التنسيق فوراً أثناء الكتابة، دون أن تضغط أي زر.
  2. اختر المسافة البادئة من الأزرار الأربعة: مسافتان، أربع مسافات، Tab، أو تصغير، وفعّل خيار ترتيب المفاتيح أبجدياً إن أردت.
  3. انسخ النتيجة من صندوق الإخراج بزر النسخ، أو راجع سطر الحالة إن ظهر أن JSON غير صالح لتعرف مكان الخطأ بالضبط.

لماذا كتبنا parser خاصاً بدل JSON.parse؟

أغلب منسّقات JSON على الإنترنت تفعل الشيء نفسه خلف الكواليس: تمرّر نصك إلى JSON.parse ثم تعيد كتابته بـ JSON.stringify. حل سريع، لكنه يمرّ عبر خطوة وسيطة لا داعي لها، وهي تحويل كل رقم في مستندك إلى double في جافاسكربت، وهو تمثيل لا يحمل أكثر من 17 رقماً معنوياً مهما كان الرقم الأصلي أطول من ذلك.

والفرق ليس نظرياً. مرّر {"id": 12345678901234567890} عبر هذا المسار وستحصل على {"id":12345678901234567000} — تغيّرت الأرقام الثلاثة الأخيرة بصمت. ومرّر {"price": 0.1000000000000000055511151231257827} وستحصل على {"price":0.1}، أي رقم مختلف تماماً عن الذي كتبتَه. أما هذه الأداة فتحتفظ بنص كل رقم كما لصقته، رقماً برقم، وتعيد إخراجه دون أن يمر بأي تحويل إلى double؛ فالتنسيق هنا لا يغيّر قيمة واحدة مهما طال الرقم. والأرقام التي لا يسعها double تُعرض في تنبيه مستقل، لأن أي برنامج يقرأ ناتجك لاحقاً بـ JSON.parse سيغيّرها رغم ذلك.

وينطبق الأمر نفسه على المفاتيح المكرّرة. {"id": 1, "name": "a", "id": 2} مستند JSON صالح تماماً حسب المواصفة، لكن JSON.parse يُبقي على آخر قيمة لكل مفتاح بصمت فتحصل على {"id":2,"name":"a"} دون أي إشارة إلى أن قيمة أولى ضاعت. هذه الأداة تبلّغ عن كل تكرار برقم سطره وتُبقي الإدخالين معاً في الإخراج بدل حذف أحدهما. صحيح أن هذا لا يحلّ المشكلة نهائياً: إن لصقت الناتج لاحقاً في برنامج يستعمل JSON.parse فسيأخذ ذلك البرنامج آخر قيمة فقط كعادته. وخيار ترتيب المفاتيح أبجدياً — وهو غير مفعّل افتراضياً لأن الـ diff ومراجعة الكود يهتمّان بالترتيب الأصلي — يعيد كتابة هذا الترتيب إن فعّلته.

عن رسائل الأخطاء

من الإنصاف الاعتراف بأن كروم ونود الحديثين تحسّنا كثيراً هنا: معظم أخطاء JSON فيهما تذكر الآن موضع الخطأ. مرّر {"a": 1,} — فاصلة زائدة قبل القوس — وسيقول الـ parser الأصلي: Expected double-quoted property name in JSON at position 8 (line 1 column 9)، وهذا مفيد فعلاً. لكن تبقى ثغرتان حقيقيتان: الأولى أن هذا ليس مضموناً دائماً، فـ {"a": True} لا ينتج سوى Unexpected token 'T' بلا أي إشارة إلى الموضع. والثانية أن الرسالة، حين تظهر، تصف ما كان الـ parser يتوقع رؤيته بعد ذلك، لا ما كتبتَه أنت فعلاً.

هذه الأداة تسمّي الخطأ نفسه بدل التوقّع: فاصلة زائدة في النهاية، وعلامات اقتباس مفردة بدل المزدوجة، ومفتاح بلا اقتباس، وTrue أو False أو None منسوخة من بايثون، وتعليق داخل JSON، وصفر في مقدمة رقم، وسطر جديد حقيقي داخل نص — وثمانية عشر نوعاً مختلفاً من الأخطاء إجمالاً، لكل واحد منها رقم السطر والعمود وسطر المصدر نفسه مع مؤشر تحت العمود بالضبط. وفي حالة الفاصلة الزائدة تحديداً تشير الرسالة إلى الفاصلة ذاتها لا إلى القوس المعقوف الذي توقّف عنده الـ parser الأصلي. لكنها صارمة بالمقابل: التعليقات والفواصل الزائدة تُبلَّغ دائماً كأخطاء ولا تُقبل بصمت، فإن كنت تبحث عن أداة تتساهل مع JSON5 أو JSONC فهذه ليست وجهتك — وإن كانت ستدلّك على السطر الذي يحتاج إصلاحاً بالضبط.

وقد اختُبر الـ parser فعلياً في مواجهة الأصلي: وُلّد 20,000 مستند JSON، أُفسد منها 13,323 عمداً بإدراج حرف أو حذفه أو استبداله عشوائياً، واتفق الاثنان على صلاحية كل مستند من العشرين ألفاً دون استثناء — صفر اختلاف. وكل مستند قَبِله الاثنان معاً أعاد التنسيق إلى نص يُقرأ من جديد فيعطي القيمة نفسها تماماً، ونسّقه مرتين فلن يتغيّر شيء في الثانية. وحدٌّ واحد يستحق ذكره: المعالجة تجري على الخيط الرئيسي للصفحة، فملف بحجم عدة ميغابايتات سيجمّد التبويب أثناء العمل عليه.

لماذا هي مجانية

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