العمل مع JSON في JavaScript: تحليل البيانات وتسلسلها

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

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

ابدأ الدورة

مقدمة عن JSON ودورها في JavaScript



JSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات يعتمد على بناء جملة كائنات JavaScript. على الرغم من أصولها، أصبحت JSON معيارًا عالميًا لنقل البيانات المنظمة بين الخادم والعميل، وكذلك لتخزين التهيئات وتبادل المعلومات في بنى الخدمات المصغرة.



في بيئة Node.js، العمل مع JSON هو مهمة يومية: من قراءة ملفات التهيئة إلى معالجة استجابات REST API. في هذه المقالة، سنلقي نظرة مفصلة على طريقتين رئيسيتين — JSON.parse() و JSON.stringify()، وسنحلل أيضًا الأخطاء النموذجية وأفضل الممارسات.



1. تحليل JSON: طريقة JSON.parse()



تقوم طريقة JSON.parse() بتحويل سلسلة نصية بتنسيق JSON إلى كائن JavaScript. هذا ضروري عندما تستقبل بيانات من خادم، أو من ملف، أو من مصدر خارجي.



البناء الأساسي



const jsonString = '{"name": "Anna", "age": 30, "isStudent": false}';const user = JSON.parse(jsonString);console.log(user.name); // "Anna"console.log(user.age);  // 30


الاستخدام المتقدم: دالة Reviver



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



const jsonData = '{"date": "2024-01-15T10:30:00.000Z", "value": 42}';const parsed = JSON.parse(jsonData, (key, value) => {  if (key === 'date') {    return new Date(value);  }  return value;});console.log(parsed.date instanceof Date); // trueconsole.log(parsed.date.toLocaleDateString()); // "1/15/2024"


معالجة أخطاء التحليل



JSON غير الصالح سيؤدي إلى ظهور خطأ SyntaxError. قم دائمًا بتغليف استدعاء JSON.parse() في كتلة try...catch:



function safeParse(jsonString) {  try {    return { data: JSON.parse(jsonString), error: null };  } catch (error) {    console.error('JSON parsing error:', error.message);    return { data: null, error: error.message };  }}

const result = safeParse('{"name": "Error"}');console.log(result.data.name); // "Error"


2. التسلسل إلى JSON: طريقة JSON.stringify()



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



البناء الأساسي



const user = {  name: 'Ivan',  age: 25,  skills: ['JavaScript', 'Node.js']};

const jsonString = JSON.stringify(user);console.log(jsonString);// {"name":"Ivan","age":25,"skills":["JavaScript","Node.js"]}


معاملات التنسيق



الوسيط الثالث لـ JSON.stringify() يسمح لك بتعيين المسافة البادئة لإخراج قابل للقراءة. هذا مفيد بشكل خاص عند الكتابة إلى الملفات أو تصحيح الأخطاء.



const config = {  server: { port: 3000, host: 'localhost' },  database: { host: 'db.example.com', port: 5432 }};

// إخراج مضغوطconsole.log(JSON.stringify(config));

// إخراج قابل للقراءة مع مسافة بادئة بمقدار مسافتينconsole.log(JSON.stringify(config, null, 2));// {// "server": {// "port": 3000,// "host": "localhost"// },// ...// }


تصفية الخصائص باستخدام Replacer



الوسيط الثاني هو مصفوفة أو دالة تحدد الخصائص التي سيتم تضمينها في السلسلة الناتجة.



const user = {  id: 1,  name: 'Maria',  email: 'maria@example.com',  password: 'secret123',  role: 'admin'};

// استبعاد البيانات السريةconst safeUser = JSON.stringify(user, ['id', 'name', 'email', 'role']);console.log(safeUser);// {"id":1,"name":"Maria","email":"maria@exa

المدونات

توصيات الكتب