UTILS.
‎100%‎ داخل المتصفح
{ }

من كائن JS إلى JSON صارم

أصلِح شكل كائن JavaScript فضفاض — مفاتيح غير مقتبسة، علامات اقتباس مفردة، فواصل زائدة، تعليقات — إلى JSON صالح صارم، دون eval.

— يظهر المخرج هنا —

حول هذه الأداة

تُصلِح أداة من كائن JS إلى JSON صارم شكل كائن JavaScript أو JSON5 فضفاض إلى JSON صالح صارم. مبنية على مُقسِّم رموز مكتوب يدويًا — لا تستخدم eval أو new Function أبدًا — لذا فهي آمنة تحت سياسة أمان محتوى صارمة وآمنة للصق نص غير موثوق فيها. كل شيء يعمل في متصفحك.

تقبل الأشياء التي يرفضها JSON الحقيقي: المفاتيح المُعرّفة غير المقتبسة، والسلاسل بعلامات اقتباس مفردة، والفواصل الزائدة قبل ] أو }، وتعليقات // للأسطر و/* الكتل */، والقيم السداسية عشرية (0xFF)، والقيم الثمانية والثنائية، والأرقام ذات الزائد البادئ والنقطة البادئة (+1, .5)، والقيم undefined وNaN وInfinity. تُعاد اقتباس المفاتيح بعلامات اقتباس مزدوجة، وتُعاد تهريب السلاسل بشكل صحيح، وتُجرَّد التعليقات والفواصل الزائدة، وتُطبَّع الأرقام إلى أرقام JSON عادية. تختار كيفية معاملة undefined (تحويلها إلى null أو إسقاط المفتاح) والأرقام غير المنتهية (تحويلها إلى null أو إثارة خطأ)، ثم تُعاد تسلسل القيمة بـ JSON.stringify بمسافتك البادئة المختارة — مسافتان، أو 4 مسافات، أو علامات جدولة، أو مُصغَّرة.

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

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

أي صياغة فضفاضة تقبلها؟
المفاتيح غير المقتبسة، والسلاسل بعلامات اقتباس مفردة، والفواصل الزائدة، وتعليقات // و/* */، والأرقام السداسية/الثمانية/الثنائية، والأرقام ذات الزائد البادئ والنقطة البادئة، والقيم undefined وNaN وInfinity — الأشياء الشائعة التي تجعل كائنات JS المنسوخة غير صالحة كـ JSON.
هل تستخدم eval للتحليل؟
لا. تستخدم مُقسِّم رموز مكتوبًا يدويًا ومُحلِّلًا تنازليًا تراجعيًا، وليس eval أو new Function أبدًا، لذا تعمل تحت سياسة أمان محتوى صارمة وهي آمنة للمُدخَل غير الموثوق. لا تُنتِج سوى بيانات، ولا تشغّل شيفرة أبدًا.
كيف تُعالَج undefined وNaN وInfinity؟
لا يملك JSON مثل هذه القيم. تختار أنت: undefined يمكن أن تصبح null أو يُسقَط مفتاحها، وNaN/Infinity يمكن أن تصبح null أو تثير خطأً. هذا يُبقي المُخرَج JSON صالحًا صارمًا في كلتا الحالتين.
ماذا يحدث عندما يكون المُدخَل غير صالح؟
يتوقّف المُحلِّل عند أول خطأ صياغة حقيقي ويُبلِغ عنه بالسطر والعمود اللذين حدث فيهما، كي تحدّد وتُصلِح الحرف المخالف بدلًا من التخمين.

المزيد من الأدوات