كل الأدلة

تنسيق JSON والتحقق من صحته

اجعل JSON أسهل قراءة، أو تحقق من صياغته، أو أنشئ نسخة مختصرة منه. يشرح هذا الدليل المسافة البادئة وترتيب المفاتيح وحفظ النتيجة.

جرّب المثال المرفق

نزّل order-options.json، وهو طلب خيالي يحتوي على صنفين وأسماء حقول باللغة الإنجليزية. يجمع الكائن customer اسمًا ومدينة؛ وتحتوي المصفوفة items على CARD-02 ثم BOX-01. يتضمن المثال نصًا بين علامتي اقتباس، وكميات وأسعارًا عددية، والقيمة المنطقية true، والقيمة null لملاحظة توصيل فارغة. الحقول غير مرتبة عمدًا لإظهار تأثير خيار الترتيب.

خطوة بخطوة

  1. افتح منسّق ومدقق JSON. استخدم ملف لفتح الملف المرفق order-options.json، أو الصق محتواه في قيم الإدخال.
  2. اضبط المسافة البادئة على 2 لاستخدام مسافتين لكل مستوى. اترك ترتيب مفاتيح الكائنات غير محدد في التشغيل الأول.
  3. اختر معالجة المدخلات. تتحقق الأداة من صياغة JSON قبل عرض النتيجة. إذا أبلغت عن خطأ، فاستخدم رقم السطر والعمود لتحديده، ثم صحح الإدخال وحاول مجددًا.
  4. اقرأ النتيجة. يجب أن يكون الكائن customer والصنفان واضحين، بحقل أو عنصر قائمة واحد في كل سطر. تحتفظ الحقول بترتيب المثال ما دام خيار الترتيب غير محدد.
  5. اختر تنزيل النتيجة لحفظ formatted.json. يمكنك أيضًا استخدام نسخ النص لنقل النتيجة إلى محرر آخر.
  6. افتح الملف المنزّل في محرر نصوص وقارنه بالمثال باستخدام الفحوص أدناه. ثم جرّب الخيارات الأخرى للمسافة البادئة والترتيب، واختر معالجة المدخلات مجددًا بعد كل تغيير.

أمثلة قبل وبعد

تستخدم هذه الأمثلة القصيرة الكائن customer من order-options.json وتعرضه كمستند JSON صغير. قارن الاسم والمدينة نفسيهما قبل كل إعداد وبعده. يعرض قسم المراجع الاختياري في النهاية الطلب كاملًا.

تسهيل قراءة JSON المختصر

اضبط المسافة البادئة على 2، واترك ترتيب مفاتيح الكائنات غير محدد، واختر معالجة المدخلات. تضيف النتيجة فواصل أسطر ومسافتين لكل مستوى مع الاحتفاظ بالترتيب الأصلي للحقول.

قبل: إدخال مختصر

{"customer":{"name":"Zoë","city":"Bergen"}}

بعد: مسافة بادئة من مسافتين

{
  "customer": {
    "name": "Zoë",
    "city": "Bergen"
  }
}

ترتيب المفاتيح داخل كائن

أبقِ المسافة البادئة على 2، وحدد ترتيب مفاتيح الكائنات، واختر معالجة المدخلات. داخل customer، يظهر city الآن قبل name. تبقى القيمتان كما هما.

قبل: ترتيب المفاتيح الأصلي

{
  "customer": {
    "name": "Zoë",
    "city": "Bergen"
  }
}

بعد: مفاتيح الكائن مرتبة

{
  "customer": {
    "city": "Bergen",
    "name": "Zoë"
  }
}

اختصار JSON

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

قبل: مسافة بادئة من مسافتين

{
  "customer": {
    "name": "Zoë",
    "city": "Bergen"
  }
}

بعد: تصغير

{"customer":{"name":"Zoë","city":"Bergen"}}

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

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

يؤدي تغيير الإدخال أو أي خيار إلى مسح النتيجة السابقة. اختر معالجة المدخلات مجددًا لإنشاء نتيجة بالإعدادات الجديدة. تقرأ الأداة منطقة الإدخال في كل مرة؛ ولا تعيد النتيجة السابقة إلى الإدخال تلقائيًا.

ترتيب مفاتيح الكائنات

اترك ترتيب مفاتيح الكائنات غير محدد للاحتفاظ بالترتيب الأصلي لحقول كل كائن. عند تحديده، يرتب المفاتيح وفق الترتيب النصي مع التمييز بين الأحرف الكبيرة والصغيرة في المستند كله، بما في ذلك الكائنات داخل المصفوفات. تحتفظ عناصر المصفوفات نفسها بتسلسلها الأصلي.

  1. أبقِ المسافة البادئة على 2، وحدد ترتيب مفاتيح الكائنات، واختر معالجة المدخلات.
  2. تصبح مفاتيح المستوى الأعلى بالترتيب customer وdeliveryNote وitems وorder وpaid. داخل customer، يأتي city قبل name. وداخل كل صنف، يأتي price قبل quantity وsku.
  3. لا تزال المصفوفة items تحتوي على CARD-02 ثم BOX-01. ترتيب المفاتيح لا يرتب الأصناف حسب sku أو السعر.

النسخ والتنزيل والبدء من جديد

الخياروظيفته
نسخ النصينسخ النتيجة الحالية كنص. إذا تعذر النسخ، تحدد الأداة النتيجة لتتمكن من نسخها يدويًا.
تنزيل النتيجةيحفظ النتيجة الحالية باسم formatted.json. يُستخدم هذا الاسم للنتائج المنسقة والمختصرة والمرتبة؛ لذا غيّر أسماء الملفات إذا أردت الاحتفاظ بعدة نسخ.
طباعة النتائجيفتح مربع حوار الطباعة في المتصفح لنص النتيجة.
تحميل مثاليستبدل الإدخال بالمثال المدمج في الأداة ويعالجه بالإعدادات الحالية. يختلف هذا المثال عن order-options.json المستخدم في الدليل.
إزالة الكليمسح الإدخال والملف المحدد والنتيجة. تبقى خيارات المسافة البادئة والترتيب محددة.

التحقق من ملف JSON المنزّل

  • افتح formatted.json في محرر نصوص. تأكد من أن الطلب هو ORD-1042، وأن العميل هو Zoë في Bergen، وأن هناك صنفين.
  • تحقق من القيم وأنواعها: quantity هو العدد 2 ثم 1، والأسعار تحتفظ بـ19.50 و5.00، وpaid هو القيمة المنطقية true دون اقتباس، وdeliveryNote هو القيمة null دون اقتباس. تبقى الأسماء ورموز الأصناف بين علامتي اقتباس سلاسل نصية.
  • بعد تجربة ترتيب مفاتيح الكائنات، تحقق من ترتيب الحقول الموضح أعلاه ومن أن CARD-02 لا يزال يسبق BOX-01 في المصفوفة items.
  • جرّب تصغير ومعالجة المدخلات. الصق النتيجة مجددًا في قيم الإدخال، واضبط المسافة البادئة على 2، واختر معالجة المدخلات مرة أخرى. قارن القيم وترتيب الأصناف بالمثال الأصلي؛ يجب أن تحافظ خيارات التنسيق عليهما.

الأسئلة وحل المشكلات

لماذا تشير الأداة إلى أن JSON غير صالح؟

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

هل يمكن استخدام التعليقات أو فاصلة أخيرة؟

أزل التعليقات وأي فاصلة تسبق قوسًا مربعًا أو معقوفًا مغلقًا مباشرة. فهي غير صالحة في JSON. تتطلب أداة التنسيق إدخالًا صالحًا ولا تصلحه تلقائيًا.

ماذا يعني تحذير المفتاح المتكرر؟

تعني الرسالة «تم الاحتفاظ بالمفاتيح المكررة. قد تتجاهل بعض البرامج المفاتيح المكررة.» أن مفتاحًا يظهر أكثر من مرة في الكائن نفسه. تحتفظ أداة التنسيق بهذه الإدخالات وتحذرك. راجع المصدر، واختر القيمة المقصودة، وأزل الإدخال الإضافي؛ فقد يحتفظ تطبيق آخر بواحد منها فقط.

لماذا لا يُفتح ملفي أو لا تتم معالجته؟

الحد الأقصى للإدخال هو 2 MiB، أي 2,097,152 بايت. يجب أن تكون الملفات النصية المحلية بترميز UTF-8. إذا أبلغت الأداة أن البيانات معقدة جدًا، فقلل مستويات التداخل أو عدد الإدخالات. قسّم الإدخال الكبير إلى مستندات JSON أصغر ومكتملة بدلًا من قطعه وسط كائن أو مصفوفة.

لماذا تتغير الأعداد الطويلة في تطبيق آخر؟

يحتوي مثال الدقة المنفصل أدناه على 9007199254740993 و0.10000000000000001. تحتفظ أداة التنسيق هذه بنص الأعداد كما هو تمامًا مع جميع خيارات المسافة البادئة والترتيب. نسّق exact-numbers.json وقارن النتيجة بـexact-numbers-formatted.json في محرر نصوص. قد يظل التطبيق الذي يستورد النتيجة يقرّب الأعداد، لذا تأكد من دعمه للدقة المطلوبة. يجب أن يكون الرمز ذو الأصفار البادئة، مثل 00123، سلسلة نصية بين علامتي اقتباس في JSON.

هل يمكن للتنسيق استعادة أرقام قُرّبت سابقًا؟

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

اختياري: مقارنة المثال والنتائج المرجعية

أُنتجت أمثلة الشيفرة والملفات القابلة للتنزيل هذه من order-options.json باستخدام أداة التنسيق نفسها الموجودة في صفحة الأداة. لا تفعّل النسختان المنسقة والمختصرة ترتيب المفاتيح؛ أما النسخة المرتبة فتستخدم مسافتين للمسافة البادئة مع تفعيل الترتيب.

المثال الأصلي

{"order":"ORD-1042", "customer": {"name":"Zoë","city":"Bergen"}, "items":[{"sku":"CARD-02", "quantity":2,"price":19.50},{"sku":"BOX-01","quantity":1, "price":5.00}], "paid":true, "deliveryNote":null}

مسافتان؛ ترتيب المفاتيح الأصلي

{
  "order": "ORD-1042",
  "customer": {
    "name": "Zoë",
    "city": "Bergen"
  },
  "items": [
    {
      "sku": "CARD-02",
      "quantity": 2,
      "price": 19.50
    },
    {
      "sku": "BOX-01",
      "quantity": 1,
      "price": 5.00
    }
  ],
  "paid": true,
  "deliveryNote": null
}

تصغير؛ ترتيب المفاتيح الأصلي

{"order":"ORD-1042","customer":{"name":"Zoë","city":"Bergen"},"items":[{"sku":"CARD-02","quantity":2,"price":19.50},{"sku":"BOX-01","quantity":1,"price":5.00}],"paid":true,"deliveryNote":null}

مسافتان؛ مفاتيح الكائنات مرتبة

{
  "customer": {
    "city": "Bergen",
    "name": "Zoë"
  },
  "deliveryNote": null,
  "items": [
    {
      "price": 19.50,
      "quantity": 2,
      "sku": "CARD-02"
    },
    {
      "price": 5.00,
      "quantity": 1,
      "sku": "BOX-01"
    }
  ],
  "order": "ORD-1042",
  "paid": true
}
الملف المرجعيالإعداداتبايت
order-formatted.jsonمسافتان؛ ترتيب المفاتيح الأصلي300
order-minified.jsonتصغير؛ ترتيب المفاتيح الأصلي193
order-sorted.jsonمسافتان؛ مفاتيح الكائنات مرتبة300

هذه نتائج نصية فعلية وليست لقطات شاشة للواجهة. قد تلتف أسطر الشيفرة لتناسب الشاشة. تميز أسماء الملفات المرجعية بين الأمثلة؛ أما الأداة نفسها فتنزّل كل نسخة باسم formatted.json.

أدوات ذات صلة

المصادر

RFC 8259 · JSON