مساعدة تقنية
أخطاء JSON الشائعة: الفاصلة الزائدة والاقتباس وUnexpected token
أصلح JSON غير الصالح: الفاصلة الزائدة، الاقتباس المفرد، المفاتيح بلا اقتباس، وUnexpected token. اعرف لماذا يفشل JSON.parse وكيف تتحقق من JSON.
معظم أخطاء JSON تأتي من قواعد صارمة: فاصلة زائدة، اقتباس مفرد، أسماء خصائص بلا اقتباس، فاصلة ناقصة، أقواس غير متطابقة، تهريب غير صالح، أو تعليقات.
يشبه JSON كائن JavaScript، لكنه أصرم. أسماء الخصائص والسلاسل تحتاج اقتباسًا مزدوجًا.
إذا رأيت Unexpected token، فقد يكون الحرف المبلَّغ عنه موضع توقف التحليل—وليس بالضرورة بداية الخطأ الأصلي.
وُسم JSON لديك بأنه غير صالح. عادةً مشكلة بناء صغيرة، لا تنسيق ملف مكسور. الأخطاء السبعة أدناه تسبب معظم Unexpected token.
لماذا ينكسر JSON بهذه السهولة؟
JSON تنسيق بيانات ببناء صارم. قد يبدو حرف كائن JavaScript مشابهًا ويظل JSON غير صالح. في JSON القياسي تحتاج أسماء الخصائص والسلاسل اقتباسًا مزدوجًا، والفاصلة الزائدة غير مسموحة، والتعليقات ليست جزءًا من التنسيق.
1. الفواصل الزائدة
الفاصلة الزائدة بعد آخر خاصية هي المشكلة. JSON القياسي لا يسمح بها.
غير صالح
{
"name": "Alex",
"age": 30,
}
صالح
{
"name": "Alex",
"age": 30
}
القاعدة نفسها تنطبق على المصفوفات. احذف الفاصلة بعد آخر عنصر.
غير صالح
[
"red",
"green",
]
صالح
[
"red",
"green"
]
2. اقتباس مفرد بدل المزدوج
JavaScript كثيرًا ما يقبل الاقتباس المفرد. JSON لا يقبل. يجب أن تستخدم أسماء الخصائص وقيم السلاسل اقتباسًا مزدوجًا.
غير صالح
{
'name': 'Alex'
}
صالح
{
"name": "Alex"
}
3. أسماء خصائص بلا اقتباس
في JavaScript قد تكتب name بلا اقتباس أحيانًا. في JSON يجب أن يكون كل اسم خاصية سلسلة باقتباس مزدوج.
غير صالح
{
name: "Alex",
age: 30
}
صالح
{
"name": "Alex",
"age": 30
}
4. فواصل ناقصة بين القيم
تحتاج الخصائص وعناصر المصفوفة فاصلة بينها. قد يبلّغ المحلل عن Unexpected token عند الاقتباس أو القوس التالي، لا عند الفاصلة الناقصة نفسها.
غير صالح
{
"name": "Alex"
"age": 30
}
صالح
{
"name": "Alex",
"age": 30
}
5. أقواس ناقصة أو زائدة
الكائنات تستخدم { }. المصفوفات تستخدم [ ]. يفشل JSON المتداخل غالبًا عندما ينقص ] أو يزيد } أو يُبدَّل الاثنان. عُدّ أزواج الفتح والإغلاق.
غير صالح
{
"items": [1, 2
}
صالح
{
"items": [1, 2]
}
6. تسلسلات تهريب غير صالحة
داخل سلسلة JSON تبدأ الشرطة المائلة العكسية تهريبًا. تسلسلات مثل " و \ و \n صالحة. مسار Windows المكتوب C:\Users ليس كذلك: \U ليس تهريب JSON قانونيًا. ضاعف الشرط المائلة، وإلا يتوقف المحلل عند ذلك الحرف.
غير صالح
{"file":"C:\Users\Alex"}
صالح
{"file":"C:\\Users\\Alex"}
7. تعليقات داخل JSON
JSON القياسي بلا تعليقات. بعض أدوات الإعداد تقبل // أو /* */ (JSONC وJSON5 وما شابه). ذلك ليس JSON قياسيًا، وJSON.parse يرفضه.
غير صالح
{
// user name
"name": "Alex"
}
ماذا يعني Unexpected token؟
واجه المحلل حرفًا غير مسموح في ذلك الموضع. النقطة المبلَّغ عنها هي حيث توقف القراءة. إن أسقطت فاصلة قبل ذلك، قد يشير الخطأ إلى اقتباس الخاصية التالية. تختلف الصياغة حسب بيئة التشغيل؛ لا تتوقع أن تطبع كل متصفحات الجملة نفسها.
ماذا يعني Unexpected end of JSON input؟
انتهى النص قبل اكتمال القيمة. أسباب شائعة: } أو ] ناقص، إدخال مقطوع، جسم فارغ، أو استجابة API انقطعت. ليست علة واحدة.
لماذا يفشل JSON.parse()؟
JSON.parse() يقبل نص JSON صالحًا فقط. هذا ينجح:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
هذا يفشل، لأن الاقتباس المفرد ليس JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
رسالة الخطأ الدقيقة تعتمد على بيئة تشغيل JavaScript. اعتبر الرسالة تلميحًا، ثم افحص الفواصل والاقتباس والأقواس قرب ذلك الموضع.
قد يبدو حرف كائن JavaScript مثل { name: 'Alex' }. يجب أن يبدو JSON الصالح مثل { "name": "Alex" }: أسماء وسلاسل باقتباس مزدوج، بلا فاصلة زائدة، بلا تعليقات.
- نص JSON
- المحلل يقرأ الرموز
- بيانات صالحة أو Unexpected token
كيف تجد خطأ JSON بسرعة
اعمل بهذا الترتيب. لا تبدأ بإعادة كتابة الملف كله.
- مرّر JSON عبر أداة تحقق.
- اقرأ أول خطأ مبلَّغ.
- انظر قليلًا قبل الموضع المبلَّغ.
- افحص الفواصل، خاصة الزائدة والناقصة.
- افحص الاقتباس: مزدوج فقط.
- طابق { } و [ ].
- افحص تهريب الشرطة المائلة في السلاسل.
- أزل التعليقات إن احتجت JSON صارمًا.
خريطة سريعة للإصلاحات المعتادة:
| المشكلة | الإصلاح |
|---|---|
| فاصلة زائدة | احذف الفاصلة بعد آخر عنصر. |
| اقتباس مفرد | استخدم اقتباسًا مزدوجًا للأسماء والسلاسل. |
| مفتاح بلا اقتباس | غلّف اسم الخاصية باقتباس مزدوج. |
| فاصلة ناقصة | ضع فاصلة بين الخصائص أو عناصر المصفوفة. |
| قوس ناقص | أغلق كل زوج { } و [ ]. |
| تهريب غير صالح | استخدم تهريبًا قانونيًا، أو ضاعف الشرط المائلة في المسارات. |
| تعليق | أزل // و /* */ لـ JSON القياسي. |
تحقق من JSON ونسّقه في المتصفح
يستطيع NEXNARA تنسيق JSON والمقارنة فحص JSON على هذا الجهاز.
يمكنك التحقق، والتنسيق بمسافتين أو أربع أو بعلامات تبويب، وminify، ومقارنة مستندين (JSON Diff)، وفتح ملف .json. التحليل يستخدم JSON.parse في المتصفح، لا eval.
المستندات أكبر من 5 MB قد تبدو بطيئة. النص أكبر من 15 MB لا يُعالَج في المتصفح، كي تبقى الصفحة مستجيبة.
معالجة JSON نفسها تتم في متصفحك. لا يُرسل النص إلى خادم NEXNARA لهذه الأداة. الإعلانات وميزات الموقع الأخرى ما زالت تستخدم الشبكة؛ ذلك منفصل عن المعالجة.
تحتاج فحص JSON غير صالح؟ افتح تنسيق JSON والمقارنة والصق النص.
FAQ
لماذا يقول JSON لدي Unexpected token؟
واجه المحلل حرفًا غير مسموح في ذلك الموضع. الخطأ الحقيقي—غالبًا فاصلة ناقصة أو اقتباس مفرد—قد يقع قبل ذلك الموضع مباشرة.
هل الفواصل الزائدة مسموحة في JSON؟
لا. JSON القياسي لا يسمح بفاصلة بعد آخر خاصية أو عنصر مصفوفة. حروف كائن JavaScript غالبًا تسمح بها.
هل يمكن لـ JSON استخدام اقتباس مفرد؟
لا. أسماء الخصائص والسلاسل يجب أن تستخدم اقتباسًا مزدوجًا.
هل يمكن أن يحتوي JSON تعليقات؟
ليس في JSON القياسي. بعض الأدوات تقبل JSONC أو JSON5 مع تعليقات؛ JSON.parse ما زال يرفضها.
لماذا يفشل JSON.parse()؟
السلسلة ليست JSON صالحًا. أسباب شائعة: فاصلة زائدة، اقتباس مفرد، مفاتيح بلا اقتباس، تعليقات، أو قيمة مقطوعة. الرسالة الدقيقة تعتمد على بيئة التشغيل.
كيف أتحقق مما إذا كان JSON صالحًا؟
الصقه في أداة تحقق مثل تنسيق JSON والمقارنة، أو استدعِ JSON.parse في وحدة التحكم. إن رمى التحليل استثناءً، فالنص ليس JSON صالحًا.