العربية

أدوات المطور · JSON المنسق والمدقق

كيفية عمل الطباعة الجميلة JSON: المسافة البادئة والمسافات البيضاء وترتيب المفاتيح

· كيف يعمل

json سير عمل المطور تصديق

كيفية عمل الطباعة الجميلة JSON: المسافة البادئة والمسافات البيضاء وترتيب المفاتيح الموضحة برموز JSON المميزة وحدود التحقق الدقيقة
الرسم التوضيحي المتجه الأصلي ToolAcre

لا تغير الطباعة الجميلة سوى مسافات بيضاء ضئيلة، ومع ذلك يشعر الناس بالقلق من أنها تغير بياناتهم. يشرح هذا المنشور ما يُسمح للمنسق بلمسه، وكيفية تطبيق عمق المسافة البادئة، وما يحدث لترتيب المفاتيح.

نفس البيانات، وثلاثة أشكال مختلفة

نفس البيانات، بثلاثة أشكال مختلفة - يمكن للحمولة المدمجة API أن تشغل سطرًا واحدًا، أو تتوسع بمسافتين في كل عمق، أو تنتشر أبعد بأربعة. تصف الأقواس والأقواس والأسماء والقيم نفس البنية التي تم تحليلها في كل إصدار. تختلف فواصل الأسطر والتباعد بين الرموز الهيكلية فقط. هذا التمييز مهم عند مراجعة مخرجات المنسق: لا يعد الاختلاف الأكبر تغييرًا تلقائيًا في البيانات، لأن المسافة البادئة تعمد إلى تغيير العديد من البايتات مع ترك القيمة الناتجة سليمة.

يقدم ToolAcre مسافات أو أربع أو ثماني مسافات وعلامة تبويب، ثم يمرر المسافة البادئة المختارة إلى JSON.stringify. يجعل سجل النشر المتداخل القصير المقارنة واضحة: تظل المناطق في نفس ترتيب المصفوفة، وتظل القيم المنطقية منطقية، وتظل أعداد مرات إعادة المحاولة أرقامًا.

أي مسافة بيضاء تعتبرها JSON غير مهمة

أي مسافة بيضاء تعتبرها JSON غير ذات أهمية — RFC 8259 تسمح بالمسافات وعلامات التبويب الأفقية وخلاصات الأسطر وإرجاع السطر قبل الأحرف الهيكلية أو بعدها. لذلك يمكن للمنسق وضع سطر جديد بعد `{`، ومسافات قبل عضو متداخل وسطر جديد آخر قبل `}` دون تغيير القيمة. ومع ذلك، لا يمكن التخلص من المسافات البيضاء عالميًا. بمجرد أن يفتح الاقتباس المزدوج سلسلة، تنتمي كل مساحة عادية إلى محتوى تلك السلسلة ويجب أن تستمر في التنسيق تمامًا مثل البيانات.

النموذج العقلي الأكثر أمانًا هو فصل حدود الرمز المميز عن محتويات السلسلة. بين النقطتين والرقم، يتم عرض مسافة بيضاء إضافية مسموح بها. بين حروف الرسالة المقتبسة هي معلومة. يقوم ToolAcre بتوزيع المصدر أولاً وإجراء تسلسل للقيمة الناتجة، لذلك يختار JSON.stringify مسافة بيضاء جديدة حول الحاويات مع الحفاظ على أحرف السلسلة التي تم فك تشفيرها.

كيفية تطبيق إعداد المسافة البادئة

كيفية تطبيق إعداد المسافة البادئة - تضيف كل حاوية متداخلة نسخة واحدة من وحدة المسافة البادئة المحددة. تبدأ خاصية المستوى الأعلى بمستوى واحد في؛ تبدأ الخاصية الموجودة داخل كائنها بمستويين؛ يضيف كائن داخل مصفوفة مستوى آخر. تعود الأقواس والأقواس المغلقة إلى المسافة البادئة للحاوية التي تمتلكها. وبالتالي فإن العرض يعكس العمق الهيكلي بدلاً من طول المفتاح أو القيمة أو السطر السابق.

تنشئ المسافات عرضًا مرئيًا ثابتًا في كل محرر، بينما تتيح علامة التبويب لكل عارض اختيار مدى عرض مستوى واحد. يقوم JavaScript أيضًا بتقييد المسافة البادئة JSON.stringify بعشرة أحرف مسافات أو الأحرف العشرة الأولى من السلسلة المتوفرة، على الرغم من أن ToolAcre يعرض الإعدادات المسبقة العملية فقط.

هل يؤدي التنسيق إلى تغيير ترتيب المفاتيح؟

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

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

ما يمكن أن يتغير منسق التحليل وإعادة التسلسل

ما الذي يمكن أن يتغير من خلال منسق التحليل وإعادة التسلسل؟ تظل القيمة التي تم تحليلها موجودة، لكن تهجئتها الأصلية لا تظل كذلك. الرقم المكتوب بالشكل `1.0` قد يظهر بالشكل `1`، و`1e3` قد يظهر بالشكل `1000`. يمكن أن يظهر الحرف الذي تم تهريبه القابل للطباعة مرة أخرى حرفيًا، في حين قد يتم هروب الحرف الحرفي عندما يتطلب التسلسل ذلك. لقد تم طي أسماء الكائنات المكررة بالفعل أثناء التحليل، لذلك تبقى قيمة الخاصية النهائية فقط متاحة للمنسق.

تشرح هذه التحويلات سبب عدم معاملة المخرجات المنسقة كمحرر مستندات يحافظ على البايت. قارن القيم التي تم تحليلها عندما يكون التكافؤ الدلالي هو الهدف، وافحص الاختلافات النصية عندما يكون التدوين الأصلي مهمًا لسير عمل التوقيع أو التجزئة أو التدقيق. الأعداد الصحيحة الكبيرة جدًا تستحق عناية خاصة لأن JavaScript من الممكن أن تفقد الأرقام الدقة قبل إجراء التسلسل.

مثال عملي: تنسيق كائن متداخل

مثال عملي: تنسيق كائن متداخل - ابدأ بـ `{"service":{"regions":["sg","us"],"retry":{"count":3}}}` واختر مسافتين. قوس الجذر الافتتاحي يتبعه سطر جديد. يتلقى `service` مسافتين بادئتين، وتتلقى خصائصه الفرعية أربعة، وتتلقى عناصر المصفوفة ستة، وتتلقى الخاصية `count` المتداخلة ستة أيضًا. تنتهي كل فاصلة عضوًا معروضًا واحدًا، ويتوافق كل محدد إغلاق مع مستوى المسافة البادئة للحاوية المفتوحة الخاصة به.

يؤدي تبديل نفس القيمة إلى علامة تبويب إلى تغيير البادئة المستخدمة لكل مستوى فقط. يمكن أن يؤدي تشغيل فرز المفاتيح أيضًا إلى وضع `regions` قبل `retry`، لكن المصفوفة ستظل تقرأ `sg` ثم `us`. تتحقق المراجعة المفيدة من المخرجات في مسارين: تأكد أولاً من أن التداخل وترتيب المصفوفة يمثلان القيمة الأصلية، ثم قرر ما إذا كانت المسافة البيضاء المختارة تناسب المستودع.

ما لا يغطيه هذا

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

تذهب مخططات JSON الأساسية إلى ما هو أبعد من التنسيق العادي من خلال تحديد الترتيب الدقيق للأعضاء، وتهجئة الأرقام، والهروب من التوقيعات أو التجزئة الحتمية. ToolAcre لا تدعي أنها تطبق مثل هذا المعيار الأساسي. إنه ينتج مخرجات متصفح محلية قابلة للقراءة باستخدام JSON.parse وJSON.stringify، مع فرز مفتاح عودي اختياري.

الوجبات الجاهزة: الطباعة الجميلة عبارة عن تحول للمسافة البيضاء

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

لا يزال بإمكان أداة التحليل وإعادة التسلسل تطبيع الأرقام والهروب من التهجئة لأنها تعمل من القيمة بدلاً من النص المميز الأصلي. قم بمراجعة تلك الحالات عندما يكون الإخلاص المعجمي مهمًا، وتجنب استخدام مخرجات جميلة عادية كنموذج أساسي للتوقيعات. بالنسبة للتكوين اليومي وفحص API، حدد المسافة البادئة التي يستخدمها فريقك، واترك الفرز ما لم يكن ذلك مطلوبًا، وقم بالتنسيق محليًا والتحقق من صحة النص المرسل.