§

الصق JSON

§

الناتج المُصغّر

text
§

نسبة التوفير

  • الحجم الأصلي
  • الحجم المُصغّر
  • وُفِّر
  • نسبة التوفير

تصغير JSON يدفع كلفته في كل واجهة إقليمية: شبكات STC وMobily للجيل الخامس في السعودية تنقل حمولات إنترنت الأشياء، وأرامكو ترسل قراءات صناعية بصيغة JSON عبر LTE المخصّص، وأبراج du وEtisalat الإماراتية تستهلك واجهات تطبيقات تجارية بكثافة. واجهات بطاقة مدى السعودية للمدفوعات تتطلب حمولات JSON موجزة، وإرشادات الجهاز الوطني المصري لتنظيم الاتصالات NTRA توصي بحدّ أدنى من البايتات، وكذلك نظام BENEFIT البحريني للمدفوعات الفورية. منصة الدرهم الإلكتروني الإماراتية eDirham تستفيد من التصغير، وبيانات المركز الوطني للوثائق والمحفوظات NCDC السعودي وبوابة البيانات المفتوحة في البحرين تُنشر كملفات JSON ضخمة.

ما هو تصغير JSON؟

JSON (JavaScript Object Notation) صيغة خفيفة لتبادل البيانات قائمة على النص، مُعرَّفة في RFC 8259 و ECMA-404. التصغير يحذف كل مسافة وجدولة وسطر جديد يقع خارج سلسلة نصية — تُحفظ القيم بايتاً ببايت، وتُزال المسافات التجميلية فقط. ينتج عن الناتج التحليل إلى القيمة نفسها تماماً كالمدخل.

كيف يعمل تصغير JSON؟

يُعالَج المدخل بالكامل داخل متصفحك باستخدام الدالتين المدمجتين JSON.parse و JSON.stringify. الخطوات الرئيسية هي:

  1. يُقرأ مدخلك من حقل النص حرفياً — كل بايت ألصقته يبقى في الذاكرة محلياً.
  2. يحلل المتصفح المدخل عبر JSON.parse. إذا لم يكن المدخل JSON صالحاً، يطلق المحلل خطأ SyntaxError يُلتقط ويُعرض حرفياً — لا يغادر نصك الصفحة.
  3. عند نجاح التحليل، يُعاد إصدار القيمة المحللة عبر JSON.stringify(value) — بدون وسيط إزاحة — مما ينتج أقصر شكل صالح للقيمة نفسها.
  4. يُحسب طول كل من النص الأصلي والمُصغّر بالبايتات عبر new TextEncoder().encode(...).byteLength — وهو نفس عدد بايتات UTF-8 الذي سيراه خادم HTTP على الشبكة.
  5. يُكتب الناتج في حقل نص للقراءة فقط، ويُبلِّغ شريط المقاييس عن فروقات البايتات مع النسبة المئوية للتوفير، ويتيح زر التنزيل تغليف الناتج كملف .min.json جاهز للشحن.

لماذا نُصغّر JSON باستخدام هذه الأداة؟

  • الخصوصية: كل عملية تحليل وتصغير وقياس تجري داخل متصفحك. لا يصل JSON إلى خوادمنا — لا رفع ولا قياس عن بُعد ولا حساب.
  • أرقام بايتات حقيقية: تُحسب الأحجام الأصلية والمُصغّرة والتوفير عبر TextEncoder كي ترى فروقات بايتات UTF-8 الفعلية التي ستحاسبك عليها شبكة توصيل المحتوى أو بوابة API.
  • بدون فقدان بيانات: التصغير تجميلي محض — كل قيمة تُحلَّل إلى شجرة JSON ذاتها، لذا فهو آمن لحمولات الإنتاج وملفات البيان والعينات المضمَّنة.
  • سريع: JSON.parse و JSON.stringify الأصليان يعالجان حمولات بحجم الحافظة فوراً، دون مكتبات خارجية تُحمَّل.

ما هي التطبيقات الشائعة لتصغير JSON؟

حذف المسافات غير ذات المعنى من JSON يظهر في تطوير الويب وهندسة البيانات والأنظمة المضمنة:

  • تقليص حمولات APIs: تقليص أجسام الطلبات والاستجابات قبل أن تعبر بوابة API محاسَبة، أو وصلة خروج مدفوعة، أو رابطاً ساتلياً.
  • التضمين في HTML: حشر كتلة JSON داخل سمة data-* أو وسم <script type="application/json"> دون تسريب مسافات الطباعة الجميلة إلى الصفحة المعروضة.
  • تقليص localStorage: تقليل استهلاك حصص localStorage / IndexedDB بكتابة JSON مُصغّر بدلاً من JSON مطبوع طباعةً جميلة، وهو ذو قيمة على متصفحات الجوال ذات حدود التخزين الصارمة لكل أصل.

كيف يبدو مثال على تصغير JSON؟

لصق ملف إعداد بحجم 1.2 ك.ب مطبوع طباعةً جميلة (نحو 1,225 بايت بمسافة بادئة من مسافتين) والضغط على تصغير يقلصه عادةً إلى ما دون 0.4 ك.ب — توفير قدره 66% — مع الحفاظ على كل مفتاح وقيمة بدقة. ملف output.min.json القابل للتنزيل مطابق بايتاً ببايت لما سيُصدره خادم HTTP بترويسة Content-Type: application/json دون أي وسيط تنسيق.

هل يعمل هذا داخل متصفحي؟

نعم. خط أنابيب التصغير هو JSON.parse و JSON.stringify الأصليان يعملان داخل تبويب المتصفح. لا يُرفَع شيء، ولا يوجد خادم خدمة وكيل يعترض مدخلك، والصفحة لا ترسل أي طلبات شبكية لخطوة التصغير ذاتها. الحركة الخارجة الوحيدة هي أصول تحميل الصفحة المعتادة (CSS وخطوط وتحليلات) — لا يصل JSON إلى Ultim8Soft.

لماذا نُصغّر JSON؟

JSON المُصغّر يُحلَّل إلى القيمة نفسها كالمصدر المطبوع طباعةً جميلة لكنه أصغر على الشبكة وفي التخزين. الحمولات الأصغر تعني فواتير خروج CDN أقل، وتنزيلات جوال أسرع، وضغط ذاكرة أقل داخل خدمات worker، وملاءمة أحكم داخل أغلفة بحجم ثابت مثل حمولات JWT وسمات HTML data-* المضمنة وحصص localStorage. في الـ APIs عالية الحمل تتراكم فوائد البايتات — تقليص بنسبة 30% على نقطة طرفية بحجم 1 ج.ب/يوم يوفر نحو 9 ج.ب شهرياً.

هل يفقد التصغير بيانات؟

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

ما الفرق بين المُنسِّق والمُصغّر؟

الأداة الشقيقة مُنسِّق JSON تسير في الاتجاه الآخر: تُوسِّع المسافات ليتمكن البشر من قراءة البنى المتداخلة. أما المُصغّر فيحذف هذه المسافات للنقل والتخزين. الأداتان متعاكستان — تمرير مستند JSON عبر المُنسِّق ثم المُصغّر ينتج نفس سلسلة البايتات التي بدأت بها، لأن كلتيهما تعملان على القيمة المحللة لا على الترميز التجميلي.

مُصغّر JSON هذا يستخدم المحلل نفسه الذي تعتمده بيئة تشغيل Node.js أو Deno أو متصفحك، وينتج مخرَجاً مطابقاً بايتاً ببايت لما سيُصدره خادم HTTP بسيط. الصق أي JSON أعلاه، انسخ الناتج، أو نزّله كملف .min.json.