أخطاء JSON الشائعة وحلولها
تعلم كيفية تحديد وإصلاح أخطاء JSON الشائعة. دليل شامل مع أمثلة وحلول.
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# أخطاء JSON الشائعة وحلولها
تعلم كيفية تجنب وإصلاح أخطاء JSON الأكثر شيوعاً.
الخطأ 1: الفاصلة الزائدة
المشكلة
{
"الاسم": "أحمد",
"العمر": 30,
}
رسالة الخطأ
SyntaxError: Unexpected token } in JSON
الحل
{
"الاسم": "أحمد",
"العمر": 30
}
النصيحة
لا تضع فاصلة بعد العنصر الأخير في الكائن أو المصفوفة.
الخطأ 2: علامات اقتباس خاطئة
المشكلة
{
'الاسم': 'أحمد',
"العمر": 30
}
الحل
{
"الاسم": "أحمد",
"العمر": 30
}
القاعدة
JSON يتطلب علامات اقتباس مزدوجة " فقط.
الخطأ 3: مفتاح بدون علامات اقتباس
المشكلة
{
الاسم: "أحمد",
العمر: 30
}
الحل
{
"الاسم": "أحمد",
"العمر": 30
}
ملاحظة
المفاتيح يجب أن تكون دائماً بين علامات اقتباس مزدوجة.
الخطأ 4: التعليقات
المشكلة
{
// هذا تعليق
"الاسم": "أحمد",
/ تعليق متعدد
الأسطر /
"العمر": 30
}
الحل
{
"الاسم": "أحمد",
"العمر": 30
}
ملاحظة
JSON لا يدعم التعليقات. استخدم JSON5 أو JSONC إذا كنت بحاجة للتعليقات.
الخطأ 5: الفاصلة المنقوطة
المشكلة
{
"الاسم": "أحمد";
"العمر": 30
}
الحل
{
"الاسم": "أحمد",
"العمر": 30
}
القاعدة
استخدم الفاصلة , وليس الفاصلة المنقوطة ;.
الخطأ 6: undefined
المشكلة
{
"الاسم": "أحمد",
"القيمة": undefined
}
الحل
{
"الاسم": "أحمد",
"القيمة": null
}
البدائل
// استخدم null
{
"القيمة": null
}
// أو احذف الحقل
{
"الاسم": "أحمد"
}
الخطأ 7: دوال JavaScript
المشكلة
{
"الاسم": "أحمد",
"التحية": function() { return "مرحباً"; }
}
الحل
{
"الاسم": "أحمد",
"الرسالة": "مرحباً"
}
ملاحظة
JSON لا يدعم الدوال، فقط البيانات.
الخطأ 8: أرقام غير صالحة
المشكلة
{
"الرقم1": 0x1A,
"الرقم2": Infinity,
"الرقم3": NaN
}
الحل
{
"الرقم1": 26,
"الرقم2": null,
"الرقم3": null
}
القاعدة
استخدم أرقام عشرية عادية فقط.
الخطأ 9: أقواس غير متطابقة
المشكلة
{
"المستخدمون": [
{"الاسم": "أحمد"},
{"الاسم": "فاطمة"
]
}
رسالة الخطأ
SyntaxError: Unexpected token ]
الحل
{
"المستخدمون": [
{"الاسم": "أحمد"},
{"الاسم": "فاطمة"}
]
}
الخطأ 10: أحرف خاصة غير مهربة
المشكلة
{
"الرسالة": "قال "مرحباً""
}
الحل
{
"الرسالة": "قال \"مرحباً\""
}
الأحرف التي تحتاج escape
{
"علامة_اقتباس": "\"",
"شرطة_مائلة": "\\",
"سطر_جديد": "سطر\nجديد",
"tab": "محاذاة\tبـtab"
}
الخطأ 11: BOM (Byte Order Mark)
المشكلة
ملف JSON يبدأ بـ BOM غير مرئي.
رسالة الخطأ
SyntaxError: Unexpected token
الحل
احفظ الملف بترميز UTF-8 بدون BOM.
في VS Code:1. افتح الملف
اضغط على "UTF-8 with BOM" في الشريط السفلي
اختر "Save with Encoding"
اختر "UTF-8"
الخطأ 12: مسافات بيضاء خاصة
المشكلة
استخدام مسافات Unicode خاصة بدلاً من المسافة العادية.
الحل
استخدم مسافة عادية (space) فقط.
أدوات كشف الأخطاء
1. JSONLint
// عبر الإنترنت
// https://jsonlint.com
// أو برمجياً
const jsonlint = require('jsonlint');
try {
jsonlint.parse(jsonString);
console.log('JSON صالح');
} catch (e) {
console.error('خطأ في السطر', e.line, ':', e.message);
}
2. JSON.parse مع معالجة الأخطاء
function validateJSON(jsonString) {
try {
JSON.parse(jsonString);
return { valid: true, error: null };
} catch (error) {
return {
valid: false,
error: {
message: error.message,
position: error.message.match(/position (\d+)/)?.[1]
}
};
}
}
// الاستخدام
const result = validateJSON('{"الاسم": "أحمد",}');
if (!result.valid) {
console.error('خطأ:', result.error.message);
}
3. محررات الكود
VS Code:- يظهر الأخطاء تلقائياً
- خط أحمر متعرج تحت الخطأ
- رسالة الخطأ عند المرور بالماوس
تصحيح الأخطاء خطوة بخطوة
الخطوة 1: حدد الخطأ
try {
JSON.parse(jsonString);
} catch (error) {
console.log('رسالة الخطأ:', error.message);
console.log('نوع الخطأ:', error.name);
}
الخطوة 2: حدد الموقع
ابحث عن رقم السطر أو الموضع في رسالة الخطأ:
SyntaxError: Unexpected token } in JSON at position 45
الخطوة 3: استخدم أداة تحقق
الصق JSON في JSONLint للحصول على موقع دقيق للخطأ.
الخطوة 4: أصلح الخطأ
استخدم الأمثلة أعلاه لإصلاح النوع المناسب من الخطأ.
الخطوة 5: تحقق مرة أخرى
تأكد من صحة JSON بعد الإصلاح.
أخطاء شائعة في JavaScript
خطأ 1: نسيان stringify
// خطأ
fetch('/api/users', {
method: 'POST',
body: { الاسم: 'أحمد' }
});
// صحيح
fetch('/api/users', {
method: 'POST',
body: JSON.stringify({ الاسم: 'أحمد' })
});
خطأ 2: تحليل غير صحيح
// خطأ - قد يتعطل
const data = JSON.parse(response);
// صحيح - مع معالجة الأخطاء
try {
const data = JSON.parse(response);
} catch (error) {
console.error('فشل تحليل JSON:', error);
}
خطأ 3: مراجع دائرية
const obj = { الاسم: 'أحمد' };
obj.مرجع = obj;
// خطأ - مرجع دائري
try {
JSON.stringify(obj);
} catch (error) {
console.error('خطأ:', error.message);
// TypeError: Converting circular structure to JSON
}
أخطاء شائعة في Python
خطأ 1: استخدام علامات اقتباس مفردة
import json
# خطأ - Python dict ليس JSON
data = "{'الاسم': 'أحمد'}"
json.loads(data) # خطأ!
# صحيح
data = '{"الاسم": "أحمد"}'
json.loads(data) # يعمل
خطأ 2: نسيان ensure_ascii
import json
data = {"الاسم": "أحمد"}
# سيء - أحرف Unicode مهربة
bad = json.dumps(data)
print(bad) # {"\u0627\u0644\u0627\u0633\u0645": ...}
# جيد - العربية تظهر بشكل صحيح
good = json.dumps(data, ensure_ascii=False)
print(good) # {"الاسم": "أحمد"}
نصائح للوقاية
1. استخدم Linter
قم بإعداد linter في محررك للكشف عن الأخطاء تلقائياً.
2. استخدم Schema
استخدم JSON Schema للتحقق من صحة البنية:
import Ajv from 'ajv';
const ajv = new Ajv();
const schema = {
type: 'object',
properties: {
الاسم: { type: 'string' },
العمر: { type: 'number' }
},
required: ['الاسم']
};
const validate = ajv.compile(schema);
const valid = validate(data);
if (!valid) {
console.log('أخطاء:', validate.errors);
}
3. استخدم prettier
# تثبيت
npm install --save-dev prettier
# تنسيق JSON
prettier --write "*/.json"
4. اختبر دائماً
// اختبار JSON قبل الاستخدام
function isValidJSON(str) {
try {
JSON.parse(str);
return true;
} catch {
return false;
}
}
if (isValidJSON(jsonString)) {
// استخدم البيانات
}
قائمة تحقق سريعة
عند مراجعة JSON، تحقق من:
- ✅ جميع المفاتيح بين علامات اقتباس مزدوجة
- ✅ جميع القيم النصية بين علامات اقتباس مزدوجة
- ✅ لا توجد فاصلة بعد العنصر الأخير
- ✅ جميع الأقواس متطابقة
- ✅ لا توجد تعليقات
- ✅ لا توجد قيم undefined أو NaN
- ✅ الأحرف الخاصة مهربة بشكل صحيح
- ✅ الترميز UTF-8 (للنصوص العربية)
الملخص
أخطاء JSON الشائعة:
- الفواصل الزائدة - الأكثر شيوعاً
- علامات الاقتباس - يجب أن تكون مزدوجة
- التعليقات - غير مدعومة
- أنواع غير صالحة - undefined, NaN, functions
استخدم الأدوات والمحررات الجيدة لتجنب الأخطاء!
مقالات ذات صلة
ما هو JSON؟ دليل شامل للمبتدئين
تعلم ما هو JSON، قواعد الصياغة، أنواع البيانات، وحالات الاستخدام. دليل شامل للمبتدئين لفهم JavaScript Object Notation وأهميته في تطوير البرمجيات الحديثة.
ملف JSON: البنية والاستخدامات والأمثلة
دليل شامل لفهم بنية ملفات JSON، الامتدادات، التنسيق، وأفضل الممارسات.
كيفية تنسيق JSON: دليل شامل
تعلم كيفية تنسيق JSON بشكل صحيح. أدوات، تقنيات، وأفضل الممارسات لجعل JSON قابل للقراءة.