ماذا يفعل منسّق JSON؟
منسّق JSON يأخذ أي سلسلة JSON — استجابة API نسختها من تبويب متصفح، ملف إعداد، صفّ قاعدة بيانات، أي شيء — ويوسّعها لشكل مُزاح قابل للقراءة أو يضغطها على سطر واحد. يتحقّق أيضاً من المدخل: إن كان لـ JSON خاصتك فاصلة تائهة، اقتباس مفقود، أو قوس غير مغلق، المنسّق يخبرك بالضبط أين.
الصق {"name":"Alice","age":30,"hobbies":["reading","coding"]} والمنسّق يوسّعه إلى:
{
"name": "Alice",
"age": 30,
"hobbies": [
"reading",
"coding"
]
}
بدّل الاتجاه والمنسّق يجرّد كل المسافات للخلف، منتجاً النسخة المضغوطة بسطر واحد. كلاهما يعمل فوراً في متصفحك — لا رحلة ذهاب وعودة لخادم وبياناتك لا تغادر الصفحة أبداً.
متى ستستخدم منسّق JSON
JSON في كل مكان في تطوير الويب الحديث، فالمنسّق يظهر في العمل اليومي لعدة أدوار:
- مطوّرو الخلفية الذين يصحّحون استجابات API — الصق جسم استجابة من تبويب الشبكة أو سجل خادم لرؤية البنية
- مطوّرو الواجهة الأمامية الذين يفحصون الحمولات المستقبلة من APIs أو webhooks قبل تحليلها في الكود
- مهندسو البيانات الذين يراجعون مخرجات خطوط الأنابيب، رسائل Kafka، أو سجلات وثائق NoSQL
- مهندسو QA الذين يقارنون استجابات متوقّعة مقابل فعلية في تقارير فشل الاختبار
- DevOps الذين يقرأون ملفات إعداد مصغّرة (خطط Terraform، manifests Kubernetes، مخرجات GitHub Actions)
- أي شخص يعمل بقواعد بيانات JSON مثل MongoDB أو DynamoDB أو أعمدة PostgreSQL JSONB
المنسّق مفيد أيضاً عكسياً: حين تحتاج لتضمين JSON داخل ملف آخر (مفتاح YAML، سلسلة JavaScript، رأس HTTP)، تصغير JSON لسطر واحد غالباً مطلوب. كلا الاتجاهين بنقرة واحدة.
التحقّق هو الجزء غير المُقدَّر. المنسّق يرفض JSON مشوّه بمؤشر خطأ دقيق — مفيد بكثير من "SyntaxError: Unexpected token" الغامض الذي ستحصل عليه في كونسول المتصفح.
كيف يعمل المنسّق
تحت الغطاء، المنسّق يضخّ مدخلك عبر محلّل JSON الأصلي للمتصفح. JSON.parse() يحوّل السلسلة إلى كائن JavaScript؛ JSON.stringify() يحوّلها للخلف إلى سلسلة بأيّ إزاحة اخترتها. نفس APIs التي يستخدمها كل مطوّر Node.js ومتصفح، تعمل جانب العميل.
ميزة استخدام المحلّل الأصلي هي الصحّة: المنسّق يتبع مواصفة JSON (RFC 8259) بالضبط. لا تحليل "بأفضل جهد" — إن كان لـ JSON خاصتك فاصلة لاحقة بعد عنصر المصفوفة الأخير، المنسّق يرفضه، لأن JSON يمنع الفواصل اللاحقة.
خطوة التوسيع تستخدم إزاحة 2 مسافة بشكل افتراضي، الذي يطابق العرف المستخدم بمعظم APIs المنسّقة بـ JSON وملفات الإعداد. عناصر المصفوفة الفردية وخصائص الكائن كل على سطر منفصل، بترقيم متّسق (دائماً اقتباسات مزدوجة؛ أبداً مفردة).
لا شيء من هذا يتطلّب معالجة خادم — كل متصفح حديث يحلّل JSON أصلياً في أجزاء من الألف من الثانية، حتى للحمولات الكبيرة. المنسّق يتعامل مع وثائق JSON بميغابايت واحد بلا تأخير.
أنماط تنسيق شائعة
حالات استخدام مختلفة تتطلّب إخراج مختلف. إليك كيف يتعامل المنسّق مع سيناريوهات شائعة:
| المدخل | الإخراج (موسّع) | الإخراج (مصغّر) |
|---|---|---|
| كائن بسيط | متعدّد الأسطر بمفاتيح مُزاحة | سطر واحد، بلا مسافات |
| مصفوفة من الكائنات | كل كائن على كتلة أسطره الخاصة | سطر واحد، مفصول بفواصل |
| بنية متداخلة عميقاً | الإزاحة تعكس عمق التداخل | سطر واحد يحفظ العمق عبر الأقواس |
| كائنات / مصفوفات فارغة | {} و[] تبقى على سطر واحد | نفسه — لا مسافة بيضاء داخل |
| سلاسل بأحرف خاصة | مُهرَّبة (الأسطر الجديدة كـ \n، إلخ.) | نفس التهريب؛ يختلف في لفّ الأسطر |
| الأرقام (صحيحة، عشرية، علمية) | محفوظة كما كُتبت | محفوظة كما كُتبت |
لاحظ أن محتوى السلسلة محفوظ بالضبط. إن احتوى JSON خاصتك على سلسلة بأسطر جديدة مضمّنة (مهرّبة كـ \n في المصدر)، المنسّق يبقيها كما هي.
الأرقام أيضاً تمرّ بلا تغيير. JSON يسمح بعدة تنسيقات أرقام (صحيح، عشري، تدوين علمي)، ومنسّق JSON يحفظ أيّ نمط كان في المدخل — لا يطبّع 1e3 إلى 1000.
ترتيب الخصائص في الإخراج الموسّع يطابق الترتيب في مدخلك. إن لصقت كائناً بمفاتيح في ترتيب {name, age, email}، المنسّق يُخرجها بنفس الترتيب.
نصائح وحيل
بضع مزالق شائعة عند العمل بـ JSON:
- الفواصل اللاحقة غير صالحة.
[1, 2, 3,]تبدو جيدة في JavaScript لكنها تكسر JSON. جرّد الفاصلة الأخيرة قبل اللصق. - التعليقات غير مسموحة. أسطر
// noteو/* block comments */أخطاء بنية JSON. جرّدها أو استخدم JSON5/JSONC إن دعمتها أداتك (معظمها لا تدعم). - الاقتباسات المفردة لن تعمل. مفاتيح وقيم سلاسل JSON يجب أن تستخدم اقتباسات مزدوجة.
{'name':'Alice'}يفشل في التحليل. - المفاتيح غير المقتبسة غير مسموحة.
{name: "Alice"}هو حرفي كائن JavaScript، لا JSON. JSON يتطلّب اقتباسات حول كل المفاتيح. - الأرقام لا يمكن أن يكون لها أصفار رائدة.
007صالح في بعض اللغات لكن غير صالح في JSON. استخدم"007"كسلسلة إن كانت الأصفار الرائدة مهمّة.
نصيحة: إن كنت تنسخ JSON من تبويب الشبكة في متصفحك، استخدم "انسخ → انسخ الاستجابة" بدلاً من التمييز والنسخ يدوياً. الاختيار اليدوي أحياناً يلتقط أحرف Unicode مخفية أو رموز تحكّم طرفية تكسر التحليل.
ملفات JSON الكبيرة (1MB+) تعمل بخير في المنسّق، لكن الإخراج يصبح طويلاً جداً بسرعة. إن كنت تحاول فحص بنية متداخلة عميقاً داخل وثيقة ضخمة، اعتبر استخدام أداة تدعم طيّ الفروع.
أدوات المطوّرين ذات الصلة
منسّق JSON يقترن جيداً مع عدة أدوات مطوّرين Microapp أخرى:
- محوّل CSV إلى JSON — حوّل بيانات جدول البيانات إلى مصفوفات JSON من الكائنات، جاهزة للتنسيق والاستخدام كتركيبات اختبار أو بيانات أساس.
- محوّل JSON إلى CSV — سطّح مصفوفات JSON إلى صفوف CSV لمراجعة جدول البيانات أو أدوات تحليل البيانات.
- مشفّر/مفكّك Base64 — لتشفير حمولات JSON داخل رموز JWT، URIs بيانات، أو سياقات أخرى مغلّفة بـ base64.
- مشفّر/مفكّك URL — حين تحتاج لتضمين JSON بأمان في معاملات استعلام URL.
- مختبر Regex — لاستخراج قيم محدّدة من سلاسل JSON حين تحتاج تطابق نمط بدلاً من تحليل.
الأسئلة الشائعة
هل يُرسَل JSON خاصتي إلى أي خادم؟
لا. المنسّق يستخدم APIs المدمجة JSON.parse وJSON.stringify في متصفحك، كلاهما يعمل بالكامل جانب العميل. بياناتك لا تعبر الشبكة أبداً. إغلاق التبويب يزيل كل شيء.
ما الحجم الأقصى لـ JSON الذي يمكن للمنسّق التعامل معه؟
عملياً، أي شيء يمكن لمتصفحك حمله في الذاكرة — نموذجياً عدة مئات ميغابايت قبل أن يتدهور الأداء. وثائق متعدّدة الميغابايت تُنسَّق فوراً. ما فوق ~50MB قد ترى تأخيرات قصيرة حين يقسّم المتصفح العمل.
لماذا يرفض المنسّق JSON خاصتي حين يبدو جيداً؟
الأسباب الأكثر شيوعاً: فواصل لاحقة ([1, 2, 3,])، تعليقات (// note)، اقتباسات مفردة بدلاً من مزدوجة، أو مفاتيح كائن غير مقتبسة. JSON أصرم من حرفيات كائنات JavaScript.
هل يمكنني تخصيص الإزاحة (علامات جدولة مقابل مسافات، 2 مقابل 4 مسافات)؟
المنسّق حالياً يستخدم إزاحة 2 مسافة، الذي يطابق العرف المستخدم بمعظم APIs المنسّقة بـ JSON (Stripe، GitHub، Twilio). إن كان فريقك يستخدم 4 مسافات أو علامات جدولة، مرّر الإخراج عبر معيد منسّق محرّر الكود الخاص بك بعد اللصق.
هل المنسّق يتحقّق من JSON Schema؟
لا. المنسّق يتحقّق من بنية JSON (هل يحلّل؟)، لا JSON Schema (هل يطابق تعريف مخطط محدّد؟). للتحقّق من المخطط، استخدم أداة مخصّصة مثل Ajv أو json-schema-validator.
ما الفرق بين JSON المصغّر والمضغوط؟
هما نفس الشيء. "المصغّر" يؤكّد تخفيض الحجم (مفيد لحمولات HTTP، نسب gzip)؛ "المضغوط" يؤكّد المظهر البصري (سطر واحد). كلاهما ينتج إخراجاً متطابقاً.
هل يمكن للمنسّق التعامل مع JSON5 أو JSONC؟
لا — هذه مجموعات فائقة JSON تسمح بالتعليقات، الفواصل اللاحقة، وبنية مرتاحة أخرى. المنسّق يتبع JSON RFC 8259 الصارم. للعمل بـ JSON5/JSONC، جرّد التعليقات والفواصل اللاحقة أولاً، أو استخدم أداة واعية بـ JSON5 مثل حزمة json5 npm.
هل سيغيّر منسّق JSON بياناتي؟
يعيد كتابة المسافة البيضاء فقط. مفاتيح الكائن، قيم السلاسل، الأرقام، البوليان، وnull كلها تمرّ بلا تغيير. الإخراجات الموسّعة والمصغّرة تحلّل لكائنات JavaScript متطابقة.
هل يمكنني استخدام المنسّق للتحقّق من JSON بدون تغييره؟
نعم — الصق المدخل، انظر هل يحلّل بنجاح. إن قبل منسّق JSON مدخلك بلا خطأ، JSON صالح بنيوياً. (للتحقّق الدلالي مقابل مخطط، استخدم مدقّق JSON Schema بدلاً.)
لماذا يوسّع المنسّق JSON خاصتي إلى إزاحة 2 مسافة تحديداً؟
إزاحة 2 مسافة تطابق العرف المستخدم بمعظم APIs المنسّقة بـ JSON وأدوات المطوّرين (Stripe، GitHub، Twilio، الافتراضي JSON.stringify). إنها مضغوطة بما يكفي لإبقاء البنى المتداخلة عميقاً قابلة للقراءة بلا إهدار مساحة أفقية، وهي ما تتوقّعه معظم محرّرات الكود.