معالجة JSON في JavaScript (Node.js): دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع JSON في Node.js: من الأساسيات إلى التقنيات المتقدمة



JSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات أصبح المعيار الفعلي لواجهات برمجة تطبيقات الويب (API) وملفات التكوين. في Node.js، العمل مع JSON مدمج على مستوى النواة، مما يجعل معالجته سريعة ومريحة. في هذه المقالة، سنغطي جميع جوانب العمل مع JSON: من التحليل الأساسي إلى معالجة الملفات الكبيرة باستخدام التدفقات.



الأساسيات: JSON.parse() و JSON.stringify()



طريقتان عالميتان — JSON.parse() و JSON.stringify() — هما أساس كل العمل مع JSON في JavaScript.



JSON.parse() — تحويل النص إلى كائن



الطريقة JSON.parse() تأخذ نصًا بتنسيق JSON وتعيد كائن JavaScript مطابقًا. إذا كان النص يحتوي على خطأ نحوي، سيتم طرح استثناء SyntaxError.



const jsonString = '{"name": "آنا", "age": 30, "isAdmin": false}';const user = JSON.parse(jsonString);

console.log(user.name); // "آنا"console.log(user.age); // 30


المعامل الاختياري الثاني هو دالة reviver، والتي تسمح بتحويل القيم أثناء عملية التحليل:



const jsonString = '{"date": "2024-01-15T10:30:00Z", "count": "42"}';const obj = JSON.parse(jsonString, (key, value) => {    if (key === 'date') return new Date(value);    if (key === 'count') return parseInt(value, 10);    return value;});

console.log(obj.date instanceof Date); // trueconsole.log(typeof obj.count); // "number"


JSON.stringify() — تحويل الكائن إلى نص



الطريقة JSON.stringify() تقوم بالعكس — تحول كائن JavaScript إلى نص JSON. تأخذ ثلاثة معاملات: القيمة، دالة بديلة (أو مصفوفة من المفاتيح)، وعدد المسافات للتنسيق.



const user = {    name: "إيفان",    age: 25,    roles: ["admin", "editor"],    metadata: null};

// الاستخدام الأساسيconst json = JSON.stringify(user);console.log(json);// {"name":"إيفان","age":25,"roles":["admin","editor"],"metadata":null}

// مع التنسيقconst prettyJson = JSON.stringify(user, null, 2);console.log(prettyJson);/*{ "name": "إيفان", "age": 25, "roles": ["admin", "editor"], "metadata": null}*/


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



const user = { name: "بيتر", password: "secret123", age: 28 };

const safeJson = JSON.stringify(user, (key, value) => { if (key === 'password') return undefined; // إزالة كلمة المرور return value;});

console.log(safeJson); // {"name":"بيتر","age":28}


قراءة وكتابة ملفات JSON في Node.js



في المشاريع الحقيقية، غالبًا ما تُخزَّن بيانات JSON في ملفات. يوفر Node.js الوحدة fs (نظام الملفات) للعمل مع نظام الملفات.



قراءة JSON من ملف



const fs = require('fs');

// قراءة متزامنةtry { const data = fs.readFileSync('config.json', 'utf8'); const config = JSON.parse(data); console.log(config.port); // 3000} catch (err) { console.error('خطأ في قراءة الملف:', err.message);}

// قراءة غير متزامنة (موصى بها)fs.readFile('config.json', 'utf8', (err, data) => { if (err) { console.error('خطأ:', err); return; } const config = JSON.parse(data); console.log(config);});


كتابة JSON إلى ملف



const fs = require('fs');

const settings = { theme: "dark", language: "ar", notifications: true};

// كتابة مع التنسيقfs.writeFileSync('settings.json', JSON.stringify(settings, null, 2), 'utf8');console.log('تم إنشاء ملف settings.json');

// كتابة غير متزامنةfs.writeFile('settings.json', JSON.stringify(settings), (err) => { if (err) throw err;

توصيات