منسق JSON
تنسيق JSON وتصغيره والتحقق من صحته - وعندما يتعذر تحليله، معرفة موضع الخطأ بدقة.
الإدخال
0 حرفالمخرجات
تنسيق JSON وتصغيره والتحقق من صحته - وعندما يتعذر تحليله، معرفة موضع الخطأ بدقة.
عادةً ما يكون JSON القادم من سجل واجهة برمجة تطبيقات أو ملف إعدادات سطرًا واحدًا طويلًا، وعادةً ما يفشل JSON الذي لا يُحلَّل في مكان لا يمكنك رؤيته. هذه الأداة تُنسّقه بمسافات بادئة لتتمكن من قراءته، وتُصغّره عندما تحتاجه صغيرًا، وعند تلفه تخبرك بالسطر والعمود وتعرض لك ذلك السطر.
في معظم الأحيان لست هنا لجعل JSON جميلًا - أنت هنا لأن شيئًا ما رفضه ولم يقل لماذا. يُبلّغ المحلل عن السطر والعمود وما كان يتوقعه، وتطبع الأداة ذلك السطر مع السطرين المحيطين به. فاصلة مفقودة في السطر الأربعمائة من ملف إعدادات هي إصلاح يستغرق ثلاثين ثانية بمجرد أن تعرف مكانها.
لم يسمح JSON قط بأي منهما، لكن الملفات التي يُسلّمها الناس لك فعليًا - tsconfig، إعدادات VS Code، أي شيء مُحرَّر يدويًا - مليئة بهما. تحديد الخيار يزيلهما قبل التحليل، وتذكر الأداة بعدها كم تعليقًا وكم فاصلة أزالت. إنه اختياري ويُبلَّغ عنه بدقة لأن المنسِّق الذي يُغيّر مستندك بصمت أسوأ من الذي يرفضه.
لا تخمّن ما قصدته. بخلاف الإزالتين أعلاه، لا يُصلَح أي شيء: قوس معقوف غير مُغلَق، أو مفتاح بين علامتي اقتباس مفردتين، أو مفتاح بلا علامات اقتباس يُبلَّغ عنه ولا يُعاد كتابته. فرز المفاتيح وإعادة المسافات البادئة لا يغيّران أبدًا ترتيب مصفوفة ولا أي نص. يسرد القسم التالي الحالات القليلة التي قد يختلف فيها الناتج مع ذلك عمّا لصقته.
يُحلَّل JSON الخاص بك ثم يُكتب من جديد، لذا تعود بعض الأشياء بصيغة موحّدة. تُعاد كتابة الأرقام: 1.50 تصبح 1.5، و1E3 تصبح 1000.0، و-0 تصبح 0، والعدد العشري الذي يحوي أرقامًا أكثر مما يتسع له عدد عشري عائم بطول 64 بت يُقرَّب (0.1000000000000000055 تصبح 0.1). تُحفظ الأعداد الصحيحة كما هي حتى 4,300 رقم (والأطول تُرفض). إذا كرّر كائن مفتاحًا، تبقى القيمة الأخيرة فقط، دون أي تحذير. تُقبل NaN وInfinity و-Infinity وتمرّ كما هي رغم أن JSON القياسي (RFC 8259) لا يسمح بها، والعدد الأكبر من أن يتسع له عدد عشري عائم، مثل 1e400، يخرج بصيغة Infinity. إن كان أيّ من هذا مهمًا للنظام الذي ستغذّيه، فتحقّق منه بنفسك قبل أن تثق بنتيجة خالية من الأخطاء.
يُرسَل إلى الخادم ليُحلَّل ويُعاد مباشرةً في نفس الاستجابة. لا يُكتَب شيء على القرص، ولا يُخزَّن مؤقتًا، ولا يُسجَّل، ويحتفظ سجل الاستخدام بالأعداد فقط - الحجم وعمق التداخل والوضع المختار - أبدًا المستند نفسه.
عادةً بسبب التعليقات أو الفواصل الزائدة أو علامات الاقتباس المفردة أو المفاتيح غير المُقتبَسة - وكلها شائعة في ملفات الإعدادات وليس أي منها JSON صالحًا. حدّد "السماح بالتعليقات والفواصل الزائدة" للأولين؛ أما البقية فغير صالحة فعليًا ويجب إصلاحها.
حتى 2,000,000 حرف في الطلب الواحد؛ ويُرفض النص الأطول مع ذكر طوله الدقيق. للملفات بهذا الحجم تكون أداة سطر أوامر مثل jq هي الأداة الأفضل.
تقرأ خطوط أنابيب السجلات وأدوات التحميل المتدفقة كائن JSON واحدًا في كل سطر بدلًا من مصفوفة كبيرة واحدة. اختره وستعود المصفوفة ذات المستوى الأعلى كسجل مُدمج واحد في كل سطر.
لا. ترتيب مفاتيح الكائن ليس له معنى في JSON، وترتيب المصفوفة - وهو ذو معنى - لا يُمَسّ أبدًا. الفرز موجود حتى يمكن مقارنة نسختين من نفس المستند دون ضوضاء.
في Excel لـ Microsoft 365، احفظه كملف .json ثم اختر Data > Get Data > From File > From JSON. يفتحه Power Query: تظهر المصفوفة في المستوى الأعلى على شكل List، ويحوّلها To Table إلى عمود من Records، ويوزّع زر التوسيع (سهمان) في رأس العمود كل مفتاح على عمود مستقل؛ وتوسيع مصفوفة متداخلة يضيف صفًا لكل عنصر. يحتاج Power Query إلى مستند JSON صالح واحد، لذا أصلح أي خطأ هنا أولًا حيث يظهر لك السطر والعمود، ثم احفظ ناتج تجميل أو تصغير؛ أما ناتج JSON Lines فمخصص لأدوات السجلات. لا تحوّل هذه الأداة JSON إلى CSV أو Excel بنفسها. تتبع أسماء القوائم لغة Excel لديك.
يأتي Python بأداة تحقق جاهزة: الأمر python -m json.tool data.json يطبع المستند بمسافة بادئة من 4 مسافات، أو يتوقف برسالة مثل Expecting ',' delimiter: line 3 column 3. وإذا كانت jq مثبتة، فالأمر jq . data.json ينسّق المستند والأمر jq empty data.json يتحقق فقط ولا يطبع شيئًا عندما يكون الملف صالحًا. لا يقبل أيٌّ منهما التعليقات أو الفواصل النهائية، لذا يفشل ملف الإعدادات الذي يحتوي عليها؛ الصقه هنا وفعّل "السماح بالتعليقات والفواصل النهائية" لترى ما الذي حُذف.
كان المحلل ينتظر مفتاح كائن فوجد شيئًا آخر. في الغالب تكون المفاتيح بين علامتي اقتباس مفردتين أو بلا علامات، مثل {'name': 'Asha'} المنسوخ من Python أو JavaScript، فيتوقف عند السطر 1، العمود 2: تشترط JSON علامتي اقتباس مزدوجتين حول كل مفتاح وكل نص، وهذه الأداة لا تعيد كتابة علامات الاقتباس أبدًا، لذا صحّحها بنفسك. وإذا ظهرت الرسالة نفسها عند قوس إغلاق معقوف، مثل {"a": 1,}، فالسبب فاصلة نهائية؛ فعّل "السماح بالتعليقات والفواصل النهائية" لحذفها. أما Expecting value عند True أو False أو None فيعني قيمًا من Python: تكتب JSON القيم true و false و null بأحرف صغيرة. في Python يعطي json.dumps(data) نص JSON صالحًا ولا يعطيه print(data). تظهر الأخطاء كما يصوغها محلل Python، بالإنجليزية، لتتمكن من البحث عن الرسالة كما هي.
قرأ المحلل قيمة JSON كاملة ثم وجد نصًا إضافيًا بعدها. الأسباب الشائعة: سجل بتنسيق JSON Lines (NDJSON) فيه كائن واحد في كل سطر، فيتوقف عند السطر 2، العمود 1؛ أو مستندان ملصقان واحدًا بعد الآخر؛ أو تعليق // بعد آخر قوس إغلاق، ويحذفه خيار "السماح بالتعليقات والفواصل النهائية". تفحص هذه الأداة مستندًا واحدًا في كل مرة، لذا الصق سجلًا واحدًا أو ضع السجلات داخل [ ] مفصولة بفواصل؛ وعند اختيار JSON Lines تُكتب بعد ذلك سجلًا في كل سطر.