العمل مع JSON في JavaScript: التحليل والتسلسل عمليًا
\n\nJSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات يُستخدم على نطاق واسع في تطبيقات الويب الحديثة. في JavaScript، العمل مع JSON مدمج على مستوى اللغة، مما يجعله أداة مثالية لتبادل البيانات بين العميل والخادم، وكذلك لتخزين الإعدادات. في هذه المقالة، سنشرح كيفية تحليل وتسلسل JSON في بيئة Node.js، وسنستعرض أمثلة عملية وأفضل الممارسات.
\n\nما هو JSON ولماذا نحتاجه؟
\nJSON هو تنسيق نصي يعتمد على بناء جملة كائنات JavaScript. يدعم أنواع البيانات التالية:
\n- \n
- سلاسل نصية (بعلامات اقتباس مزدوجة) \n
- أرقام (صحيحة وعائمة) \n
- قيم منطقية (true/false) \n
- مصفوفات \n
- كائنات \n
- null \n
يُستخدم JSON في كل مكان: من طلبات API إلى ملفات الإعدادات (مثل package.json). في Node.js، JSON هو التنسيق الرئيسي لتبادل البيانات بين الخدمات المصغرة.
تحليل JSON: تحويل السلسلة النصية إلى كائن
\nلتحويل سلسلة JSON إلى كائن JavaScript، يُستخدم الأسلوب JSON.parse(). لنلقِ نظرة على مثال أساسي:
const jsonString = '{"name": "آنا", "age": 30, "isStudent": false}';\nconst user = JSON.parse(jsonString);\n\nconsole.log(user.name); // "آنا"\nconsole.log(user.age); // 30\nconsole.log(user.isStudent); // false\n\nهام: يجب أن تكون سلسلة JSON منسقة بدقة. يجب أن تكون جميع المفاتيح والقيم النصية بعلامات اقتباس مزدوجة. علامات الاقتباس المفردة أو الفواصل الزائدة ستؤدي إلى خطأ.
\n\nمعالجة الأخطاء أثناء التحليل
\nعند العمل مع بيانات خارجية (من ملفات، API)، هناك دائمًا خطر الحصول على JSON غير صحيح. استخدم try...catch:
const fs = require('fs');\n\ntry {\n const data = fs.readFileSync('data.json', 'utf8');\n const parsed = JSON.parse(data);\n console.log('تم التحليل بنجاح:', parsed);\n} catch (error) {\n if (error instanceof SyntaxError) {\n console.error('خطأ في بناء جملة JSON:', error.message);\n } else {\n console.error('خطأ في قراءة الملف:', error.message);\n }\n}\n\nالتحليل باستخدام دالة المراجعة
\nيقبل الأسلوب JSON.parse() وسيطًا ثانيًا — دالة يمكنها تحويل القيم. هذا مفيد، على سبيل المثال، لتحويل التواريخ النصية إلى كائنات Date:
const json = '{"name": "إيفان", "birthDate": "1990-05-15T00:00:00Z"}';\nconst user = JSON.parse(json, (key, value) => {\n if (key === 'birthDate') {\n return new Date(value);\n }\n return value;\n});\n\nconsole.log(user.birthDate instanceof Date); // true\nconsole.log(user.birthDate.getFullYear()); // 1990\n\nتسلسل JSON: تحويل الكائن إلى سلسلة نصية
\nالعملية العكسية — تحويل كائن JavaScript إلى سلسلة JSON — تتم باستخدام JSON.stringify().
const user = {\n name: 'ماريا',\n age: 25,\n skills: ['JavaScript', 'Node.js', 'Python'],\n isActive: true\n};\n\nconst jsonString = JSON.stringify(user);\nconsole.log(jsonString);\n// {"name":"ماريا","age":25,"skills":["JavaScript","Node.js","Python"],"isActive":true}\n\nتنسيق المخرجات
\nلزيادة قابلية القراءة، يمكن إضافة مسافات بادئة:
\n\nconst prettyJson = JSON.stringify(user, null, 2);\nconsole.log(prettyJson);\n/*\n{\n "name": "ماريا",\n "age": 25,\n "skills": [\n "JavaScript",\n "Node.js",\n "Python"\n ],\n "isActive": true\n}\n*/\n\nتصفية واستبدال القيم
\nالوسيط الثاني لـ JSON.stringify() يمكن أن يكون مصفوفة من المفاتيح (للتصفية) أو دالة بديلة:
المدونات
توصيات الكتب
اقرأ أيضًا