تخطَّ إلى المحتوى

تنسيق JSON

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

  • لا يُخزَّن أبدًا
  • لا طابور ولا انتظار
  • دون تسجيل ودون علامة مائية
المسافة البادئة
بعد التنسيق

يظهر JSON المنسَّق هنا.

كيف تعمل الأداة

1

الصق JSON

أو أفلِت ملف .json. كل ما تلصقه يبقى في هذه الصفحة — لا يُخزَّن أي شيء.

2

اختر المسافة البادئة

مسافتان أو أربع أو علامات Tab، أو تصغير إلى سطر واحد. يُحفظ اختيارك للمرة القادمة.

3

انسخ أو نزّل

انسخ النتيجة أو احفظها كملف. وإذا كان JSON معطوبًا، تحصل على السطر والعمود والحرف بدلًا من ذلك.

ما الذي يبقى بعد رحلة الذهاب والعودة

التنسيق تحليل ثم إعادة طباعة، والأرقام هي الجزء الوحيد الذي يُنقل كما كتبته نصًا. وهذا أوسع من حالة الأعداد الصحيحة الكبيرة التي يعدّها التنبيه: فأي رقم تختلف أقصر كتابة له في JavaScript عن كتابتك يُعاد إخراجه من مصدره، فيحتفظ 1.10 بالصفر الأخير، ويبقى 1e5 بالصيغة الأسية، ويبقى الصفر السالب سالبًا. ولا تُحسب في التحذير إلا الأعداد الصحيحة غير الآمنة، لأنها الأرقام التي يكون البديل فيها تلفًا صامتًا لا مجرد كتابة مرتبة.

السلاسل النصية لا تُنقل كنص. يُفك ترميز رموز الهروب عند قراءة المستند وتُكتب من جديد عند طباعته، فيعود \u0041 بصورة A، وتعود الشرطة المائلة المُهرَّبة مجردة. القيمة متطابقة أما البايتات فلا، وهذا لا يهم إلا في حالة واحدة لكنه يهم فيها كثيرًا: إذا كان شيء ما لاحقًا يقارن ملفي JSON بايتًا ببايت، فإن تمرير أحدهما عبر أداة تنسيق ليس عملية بلا أثر.

سلوكان على مستوى الكائنات يستحقان المعرفة قبل أن تثق بإعادة التنسيق. المفاتيح المكررة تُحسم بصمت، ويفوز آخرها، تمامًا كما يحسمها المحلّل المدمج في المتصفح — فالمستند الذي يحمل حقلي "id" يُنسَّق دون اعتراض ويعود بحقل واحد، ولا شيء يخبرك بأن الآخر كان موجودًا. وترتيب المفاتيح هو ترتيب ملفك فقط للمفاتيح التي ليست أعدادًا صحيحة: فالكائن الذي يحمل "1" و"2" و"name" يعود بالمفاتيح الرقمية أولًا بترتيب عددي، لأن هذه هي الطريقة التي ترتّب بها JavaScript نفسها خصائص الكائنات. أما المفاتيح العادية فتحتفظ بالترتيب الذي كتبتها به.

عندما تحتاج إلى شيء آخر

إذا كان ما لديك ملف tsconfig.json أو ملف إعدادات ESLint أو ملف إعدادات VS Code، فستشير هذه الصفحة إلى التعليقات والفواصل الزائدة بدل التنسيق مع تجاوزها، وهذا هو الجواب الصحيح لأداة JSON والأداة الخاطئة لملفك. تلك الملفات JSONC، ومحررك يحللها أصلًا؛ وفي سطر الأوامر، يقرأها json5 وdasel كلاهما دون التظاهر بأنها JSON.

لأي شيء يتجاوز إعادة المسافات البادئة، فأداة التنسيق ليست الشكل المناسب. يفعل jq في تعبير واحد ما لا يوفر له مربع اللصق أي خيار: فالأمر jq -S . يرتّب مفاتيح كل كائن لتمكن مقارنة استجابتين، والأمر jq 'del(.token)' يحذف حقلًا قبل أن تعرض الحمولة على أي أحد، والأمر jq -c يطوي مصفوفة كائنات إلى JSON Lines الذي يحتاجه خط المعالجة. كما أنه يقرأ ملفًا لا الحافظة، وهذا هو الفرق حين يصبح المستند أكبر من أن تحدده بسهولة.

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

هل يُخزَّن JSON الخاص بي في أي مكان؟

لا. لا يوجد أي اتصال بخادم ولا أي تسجيل، ولا يُخزَّن أي شيء. يمكنك قطع الاتصال بالإنترنت بعد تحميل الصفحة وستستمر في العمل. وهذا أهم هنا مما يبدو: فما يلصقه الناس في أداة تنسيق عبر الإنترنت هو استجابات API وملفات إعدادات وحمولات أخطاء، وهذه تحمل عادةً رموزًا مميزة (tokens) وسجلات عملاء وأسماء خوادم داخلية.

لماذا تحافظ هذه الأداة على الأرقام الكبيرة دقيقة بينما لا تفعل ذلك أدوات التنسيق الأخرى؟

لأن كل الأدوات الأخرى تقريبًا تفسدها بصمت. الرقم في JavaScript عدد عشري بـ 64 بت، فلا يستطيع حمل الأعداد الصحيحة بدقة إلا حتى 9,007,199,254,740,991. وأي رقم أكبر — معرّف منشور على Twitter/X، أو معرّف snowflake في Discord، أو رقم حساب بنكي، أو مفتاح قاعدة بيانات بـ 64 بت — يفقد خاناته الأخيرة لحظة مروره عبر `JSON.parse`. ويظل الرقم معقولًا في مظهره، وهذا ما يجعله خطيرًا: يصبح 7205759403792793600 بهدوء 7205759403792793000. تحتفظ هذه الصفحة بالخانات التي لصقتها كما هي تمامًا، وتخبرك بعدد الأرقام التي اضطرت إلى حمايتها.

ماذا تفعل مع ملف معطوب؟

تخبرك بمكان المشكلة، لا بوجودها فقط. تحصل على رقم السطر والعمود والسطر نفسه مع علامة ^ تحت الحرف المسبب للخطأ، ووصف بكلمات بسيطة — «فاصلة زائدة قبل }» بدل «Unexpected token». الفواصل الزائدة وعلامات الاقتباس المفردة والمفاتيح غير المحاطة بعلامات اقتباس وأسطر جديدة غير مُهرَّبة داخل السلاسل النصية هي الأسباب الأربعة وراء معظم ملفات JSON المعطوبة، وكل منها يُسمّى باسمه تحديدًا.

هل تتعامل مع JSON Lines / NDJSON؟

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

هل يمكنها إصلاح JSON يحتوي على تعليقات أو فواصل زائدة؟

ستشير إليها بدقة، لكنها لن تقبلها بصمت. التعليقات والفواصل الزائدة ليست JSON — بل JSON5 أو JSONC، وهو ما تستخدمه فعلًا ملفات الإعدادات مثل tsconfig.json. وأداة التنسيق التي تقبلها بصمت ستعطيك ملفًا يرفضه المحلّل لديك لاحقًا، وهذا أسوأ من رسالة خطأ هنا.

هل يوجد حد للحجم؟

الذاكرة المتاحة، لا حد نفرضه نحن. المستندات التي يبلغ حجمها بضعة ميغابايت تُنسَّق فورًا؛ أما الكبيرة جدًا فيحدّها ما يمكن حفظه في الذاكرة دفعة واحدة، لا أي شيء من جهتنا.

هل يغيّر التصغير بياناتي؟

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

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

أضِف هذه الأداة إلى موقعك

مجانية لأي مدونة أو صفحة فصل دراسي أو مقالة مساعدة. الصق مقتطفًا واحدًا وسيتمكن زوارك من استخدامها مباشرةً على صفحتك.