📋
← العودة للأدلة

أخطاء صياغة JSON الشائعة وكيفية إصلاحها باستخدام المدقق

· وسوم: json, json-errors, json-validation, json-syntax, debugging, developer-tips

أخطاء JSON الشائعة

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

1. الفواصل الزائدة

الخطأ: Unexpected token في نهاية الكائن أو المصفوفة

الفواصل الزائدة مسموح بها في كائنات ومصفوفات JavaScript ولكنها ممنوعة تمامًا في JSON.

JSON غير صالح:

{
  "name": "Alice",
  "age": 30,
}

الإصلاح: أزل الفاصلة بعد العنصر الأخير.

{
  "name": "Alice",
  "age": 30
}

المصفوفات ذات الفواصل الزائدة:

// Invalid
[1, 2, 3,]

// Valid
[1, 2, 3]

2. علامات الاقتباس المفقودة أو غير الصحيحة حول المفاتيح

الخطأ: Unexpected identifier أو Expected double-quoted property name

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

JSON غير صالح:

{
  name: "Alice",
  'occupation': "Engineer"
}

الإصلاح: قم دائمًا بتغليف المفاتيح بعلامات اقتباس مزدوجة.

{
  "name": "Alice",
  "occupation": "Engineer"
}

3. استخدام علامات الاقتباس المفردة لقيم النصوص

الخطأ: Unexpected identifier أو Unterminated string

تمامًا مثل المفاتيح، يجب أن تستخدم قيم النصوص علامات اقتباس مزدوجة في JSON. علامات الاقتباس المفردة غير صالحة.

JSON غير صالح:

{ "greeting": 'Hello, world!' }

الإصلاح: استبدل علامات الاقتباس المفردة بعلامات اقتباس مزدوجة.

{ "greeting": "Hello, world!" }

نصيحة: إذا كان النص الخاص بك يحتوي على علامات اقتباس مزدوجة، قم بتهريبها بشرطة مائلة عكسية: "He said, \"Hello\"".

4. الأحرف الخاصة غير المهروسة

الخطأ: Unexpected token أو Invalid character

يجب تهريب أحرف معينة في نصوص JSON: علامات الاقتباس المزدوجة (") والشرط المائلة العكسية (\) وأحرف التحكم.

JSON غير صالح:

{
  "path": "C:\Users\Documents\file.json",
  "quote": "He said "hello""
}

الإصلاح: قم بتهريب الشرط المائلة العكسية وعلامات الاقتباس المزدوجة بشكل صحيح.

{
  "path": "C:\\Users\\Documents\\file.json",
  "quote": "He said \"hello\""
}

قائمة كاملة بتسلسلات الهروب في JSON

| التسلسل | يمثل | |----------|-----------| | \" | علامة اقتباس مزدوجة | | \\ | شرطة مائلة عكسية | | \/ | شرطة مائلة أمامية | | \b | مسافة للخلف | | \f | تغذية النموذج | | \n | سطر جديد | | \r | إرجاع المؤشر | | \t | علامة تبويب | | \uXXXX | حرف Unicode (مثل é لحرف e) |

5. تنسيقات رقمية غير صالحة

الخطأ: Unexpected number أو Invalid number

لدى JSON قواعد محددة لكيفية تنسيق الأرقام:

  • الأصفار البادئة غير مسموح بها (01 غير صالح)
  • يُسمح بصفر بادئ واحد فقط للرقم 0
  • لا يمكن أن تحتوي الأرقام على نقاط زائدة (10. غير صالح)
  • التنسيقات الست عشرية والثمانية والثنائية غير مدعومة

JSON غير صالح:

{
  "invalid1": 01,
  "invalid2": 10.,
  "invalid3": 0xFF,
  "invalid4": 1,000
}

الإصلاح:

{
  "valid1": 1,
  "valid2": 10.0,
  "valid3": 255,
  "valid4": 1000
}

6. قيم غير صالحة: undefined, NaN, Infinity

الخطأ: Unexpected token لـ undefined, NaN, Infinity

تحتوي JavaScript على قيم ليس لها مقابل في JSON. ستسبب هذه أخطاء في التحليل:

JSON غير صالح:

{
  "undefinedVal": undefined,
  "notANumber": NaN,
  "infinity": Infinity
}

الإصلاح: استبدل بقيم JSON صالحة أو استخدم اتفاقية.

{
  "undefinedVal": null,
  "notANumber": null,
  "infinity": 1.7976931348623157e+308
}

7. فواصل زائدة أو فواصل مفقودة

الخطأ: Expected comma أو Unexpected token

يجب أن تفصل الفواصل في JSON كل زوج مفتاح/قيمة وكل عنصر مصفوفة، لكن يجب ألا تظهر بعد العنصر الأخير.

فاصلة مفقودة (غير صالح):

{
  "name": "Alice"
  "age": 30
}

الإصلاح: أضف الفاصلة المفقودة.

{
  "name": "Alice",
  "age": 30
}

8. مشكلات الهياكل شديدة التداخل

الخطأ: Maximum call stack size exceeded أو تجاوز مهلة المحلل

على الرغم من أنه ليس خطأ صياغيًا، إلا أن JSON شديد التداخل (10+ مستويات) يمكن أن يسبب مشكلات في الأداء ويجعل التصحيح صعبًا للغاية.

هيكل إشكالي:

{
  "level1": {
    "level2": {
      "level3": {
        "level4": {
          "level5": {
            "level6": {
              "value": "too deep"
            }
          }
        }
      }
    }
  }
}

نهج أفضل: قم بتسطيح الهيكل أو استخدم المراجع.

{
  "users": {
    "alice": { "role": "admin" }
  },
  "permissions": {
    "admin": ["read", "write", "delete"]
  }
}

9. أقواس الفتح أو الإغلاق المفقودة

الخطأ: Expected ',' or '}' أو Unexpected end of JSON input

الأقواس غير المتطابقة هي مصدر شائع لأخطاء JSON، خاصة في ملفات JSON الكبيرة أو المكتوبة يدويًا.

JSON غير صالح:

{
  "name": "Alice",
  "items": [1, 2, 3
}

الإصلاح: تأكد من أن كل { له } مطابق، وكل [ له ] مطابق.

{
  "name": "Alice",
  "items": [1, 2, 3]
}

نصيحة محترف: قم بتنسيق JSON الخاص بك بمسافات بادئة مناسبة لمطابقة أقواس الفتح والإغلاق بصريًا. يمكن لـ منسق JSON القيام بذلك تلقائيًا.

كيفية تصحيح أخطاء JSON بفعالية

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

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