تحويل كائنات JSON5 إلى JSON — Numio
يحوّل كائن JavaScript حرفيًا (object literal) إلى JSON صارم بمسافة بادئة من مسافتين. يقبل المفاتيح بلا علامات اقتباس، وعلامات الاقتباس المفردة، والتعليقات، والفواصل الزائدة في النهاية، والأعداد الست عشرية، والكسور العشرية التي تبدأ بنقطة، ويوحّد صيغتها.
نسخ كائن إعدادات أو بيانات اختبار (fixture) من ملف .js إلى ملف JSON أو جسم طلب API أو مجموعة Postman.
يقبل JSON وJSON5، بما في ذلك التعليقات والاقتباسات المفردة والفواصل الختامية. لا تُنفّذ دوال أو تعبيرات JavaScript.
JS Object
JSON
متى تستخدمها
- نسخ كائن إعدادات أو بيانات اختبار (fixture) من ملف .js إلى ملف JSON أو جسم طلب API أو مجموعة Postman.
- تنظيف كائن ملصوق من DevTools في المتصفح أو من التوثيق ليقبله محلل JSON صارم.
طريقة الاستخدام
- الصق الكائن الحرفي (البيانات فقط، دون تعريف متغير أو فاصلة منقوطة في النهاية) في المحرر الأيسر، أو استخدم زر تحميل الملف لفتح ملف بترميز UTF-8.
- يظهر JSON على اليمين أثناء الكتابة؛ وإذا ظهر خطأ مثل "invalid character" فتحقق من السطر والعمود المذكورين.
- راجع القيم المحوّلة (تصبح الأعداد الست عشرية عشرية، وتصبح علامات الاقتباس مزدوجة) ثم انسخ النتيجة.
كائن JavaScript حرفي
{
// Mongoose-style field definition
title: {
type: 'String',
required: true,
},
year: { type: 'Number', max: 0x7E6 },
tags: ['draft', 'review',],
ratio: .75,
'content-type': "text/plain",
}JSON
{
"title": {
"type": "String",
"required": true
},
"year": {
"type": "Number",
"max": 2022
},
"tags": [
"draft",
"review"
],
"ratio": 0.75,
"content-type": "text/plain"
}التفاصيل والقيود
يُحلَّل الإدخال بمحلل JSON5 في متصفحك ولا يُنفَّذ الكود أبدًا. تُرفض التعابير والدوال وnew Date() والقوالب النصية (template literals) وundefined والإشارات إلى المتغيرات بوصفها محارف غير صالحة.
تُرفض NaN وInfinity مع رسالة خطأ لأن JSON لا يستطيع تمثيلهما.
لا تُحفظ التعليقات ولا التنسيق الأصلي للمفاتيح؛ تستخدم المخرجات دائمًا علامات الاقتباس المزدوجة ومسافة بادئة من مسافتين.
تفقد الأعداد الصحيحة الأكبر من 2^53 دقتها (يصبح 12345678901234567890 هو 12345678901234567000). ضع المعرّفات الكبيرة بين علامتي اقتباس كسلاسل نصية.
FAQ
هل يمكنني لصق const config = { ... };؟
لا. تُقبل القيمة فقط. احذف التعريف والفاصلة المنقوطة في النهاية، وإلا سيبلّغ المحلل عن محرف غير صالح في ذلك الموضع.
ماذا يحدث للمفاتيح المكررة؟
يُعتمد آخر ظهور. يصبح {a: 1, a: 2} هو {"a": 2} دون تحذير، لذا راجع الكائنات التي دُمجت يدويًا.
هل يقبل مصفوفات أو قيمًا مفردة في المستوى الأعلى؟
نعم. تعمل أي قيمة JSON5، فمثلًا يصبح [1, 2,] مصفوفة JSON من عنصرين، ويصبح 'hi' هو "hi".