كيفية قراءة ملف JSON مع node.js

كيفية قراءة ملف JSON مع node.js

تعد قراءة ملف JSON (تدوين كائن JavaScript) في Node.js مهمة مشتركة لمطوري الويب ، وخاصة بالنسبة لأولئك الذين يعملون مع التطبيقات الجانبية للخادم. في هذا البرنامج التعليمي ، تقوم بتنفيذ العملية وتعيين الخطوات لقراءة ملفات JSON بكفاءة مع كل من Node.js fs الوحدة النمطية و fs-extra حزمة NPM. دعونا نغمر عالم ملف JSON ونزولهم بمعرفة معالجة هذه المهمة بسلاسة!

كيفية قراءة ملف JSON مع node.js

جدول المحتويات #

مقدمة #

أصبحت JSON (JavaScript -ObjectNotation) حجر الزاوية في تبادل البيانات على الويب. إنه تنسيق مقروء من الإنسان يتم تحليله بسهولة بواسطة الآلات ، مما يجعله مثاليًا لملفات واجهات برمجة التطبيقات وملفات التكوين وأكثر من ذلك بكثير. إذا كنت تعمل مع Node.js ، فمن المحتمل أن تقابل ملفات JSON كثيرًا.

يقدم منشور المدونة هذا دليلًا واضحًا وموجزًا ​​وعمليًا لقراءة ملفات JSON في Node.js. بغض النظر عما إذا كنت مطورًا متمرسًا أو يبدأ فقط ، فسوف تقوم في هذا البرنامج التعليمي بتجهيز المعرفة والتقنيات لعلاج بيانات JSON بأمان في مشاريع Node.js.

سوف تغطي نهجين:

  1. مع الأم fs الوحدة: هذه هي وحدة Node.js المدمجة للتفاعل مع الملف في نظام الملفات. ويوفر كل من الأساليب المتزامنة وغير المتزامنة لقراءة الملفات.
  2. استخدم fs-extra حزمة NPM: هذه الحزمة توسيع وظائف fs الوحدة النمطية التي توفر المزيد من الأساليب والودية وتبسيط عمليات الملفات الشائعة.

في نهاية هذا البرنامج التعليمي ، لديك فهم قوي لكلا الطريقتين ويمكنك اختيار النهج الذي يناسب احتياجاتك.

متطلبات #

قبل أن تغمر نفسك في الكود ، نتأكد من أن لديك المتطلبات التالية:

  1. Node.js مثبتة: تأكد من تثبيتك على نظامك عبر Node.js. يمكنك تنزيل أحدث إصدار من LTS من موقع Node.js الرسمي. سوف تستخدم Node.js 22 لهذا البرنامج التعليمي. يمكنك التحقق من إصدار Node.js مع:

    node --version
  2. معرفة جافا سكريبت الأساسية: يساعدك الفهم الأساسي لبناء جملة JavaScript والمفاهيم على اتباع امتحانات الكود.

  3. محرر الرمز: تحتاج إلى محرر رمز للكتابة وتحرير رمز JavaScript الخاص بك. بعض الخيارات الشائعة هي VS Code و Atom و Sublime Text و WebStorming.

لهذا البرنامج التعليمي ، استخدم واردات ESM وليس require كما في عام 2024. في القسم التالي ، ستجد سجل بيانات المليارديرات من عام 2023 ، والذي يتم استخدامه كمثال على هذا الدليل.

مثال: بيانات المليارديرات من 2023 #

لتوضيح كيفية قراءة ملف JSON باستخدام Node.js ، استخدم مثالًا على البيانات على أفضل 100 ملياردير من 100 ملياردير من عام 2023. تأتي البيانات من Kaggle وتحتوي على تفاصيل مختلفة لهؤلاء الأشخاص. قمنا برعاية البيانات للتركيز على بعض السمات المهمة بحيث تكون إدارة هذا البرنامج التعليمي أسهل في إدارتها. توجد البيانات في الأصل بتنسيق CSV وتم تحويلها لهذا البرنامج التعليمي في JSON.

فيما يلي قسم من بيانات JSON التي تستخدمها. يتم حفظه في ملف يسمى billionaires-2023.json. يمكن العثور على ملف البيانات الكامل في مستودع GitHub. يتم عرض قسم من البيانات للرجوع إليه أدناه:

[
{
"rank": 1,
"worth": 211000,
"name": "Bernard Arnault & family",
"gender": "M",
"category": "Fashion & Retail",
"country": "France",
"city": "Paris",
"source": "LVMH",
"industries": "Fashion & Retail",
"citizenship_country": "France",
"organization": "LVMH Moët Hennessy Louis Vuitton",
"title": "Chairman and CEO",
"birth_year": 1949
},
{
"rank": 2,
"worth": 180000,
"name": "Elon Musk",
"gender": "M",
"category": "Automotive",
"country": "United States",
"city": "Austin",
"source": "Tesla, SpaceX",
"industries": "Automotive",
"citizenship_country": "United States",
"organization": "Tesla",
"title": "CEO",
"birth_year": 1971
},
]

تمثل بيانات JSON هذه عددًا من الكائنات ، كل منها يتوافق مع الملياردير ويحتوي على سمات مثل الرتبة ، صافي الأصول ، الاسم ، الجنس ، الفئة ، بلد المنشأ والمزيد.

اقرأ ملف JSON مع FS # الأصلي

توفر وحدة FS الأصلية في Node.js طريقة سهلة للتفاعل مع نظام الملفات. سوف تفحص طريقتين لقراءة ملفات JSON fs:

  1. fs.readFile: هذه الطريقة تقرأ الملف غير المتزامن بأكمله.
  2. fs.readFileSync: هذه الطريقة تقرأ الملف بأكمله بشكل متزامن.

استخدام طرق غير متزامنة مثل fs.readFile بالنسبة للعمليات غير المحفوظة ، يُنصح بشكل عام ، خاصة بالنسبة للملفات الأكبر. هذا يضمن أن يبقى تطبيقك رد الفعل بسرعة أثناء قراءة الملف.

اقرأ ملف JSON غير متزامن مع FS #

في ما يلي ، ستجد نموذج رمز لقراءة بيانات 2.240 مليار سنة في عام 2023 بطريقة غير متزامنة.

import { readFile } from 'node:fs/promises';

try {
const data = JSON.parse(await readFile('billionaires-2023.json', 'utf8'));
console.log(data[1]);
} catch (err) {
console.error(`Error reading JSON file: ${err}`);
}

في هذا المثال:

  1. يمكنك استيراد وظيفة ملف القراءة المطلوبة من node:fs/promises وحدة للعمل مع الوعود وتقدم نهجا غير متزامن أكثر حداثة.
  2. في try حاجز:
    • يمكنك قراءة الملف غير المتزامن باستخدام await fs.readFile(filePath, 'utf8')مواصفات الترميز كما utf8.
    • يتم استخدام محتوى ملف القراءة في كائن JavaScript JSON.parse(data).
      يتم تسجيل بيانات الملياردير الثانوي Elon Musk على وحدة التحكم من البيانات التي تم تحليلها.
  3. في حالة حدوث خطأ أثناء العملية في العمليات catch كتلة ، يتم تسجيلها مع console.error.

نظرًا لأنك تستخدم الإصدار 22 ، فإن المستوى الأعلى متاح لوقت الانتظار. يمكنك القيام بالمثال node index.jsيتم عرض الطبعة التالية:

اقرأ ملف node.js مع وحدة FS الأصلية بطريقة غير متزامنة

في الجزء التالي ، سوف تقرأ نفس الملف fs لكن متزامن.

اقرأ ملف JSON بشكل متزامن مع FS #

بينما يوصى باستخدام الطريقة غير المتزامنة للاكتمال
انظر أيضًا كيفية قراءة ملف JSON بشكل متزامن.

import { readFileSync } from 'node:fs';

try {
const data = JSON.parse(readFileSync('billionaires-2023.json', 'utf8'));
console.log(data[1]);
}
catch (err) {
console.error(`Error reading JSON file: ${err}`);
}

يشبه هذا المثال الإصدار غير المتزامن ، لكنهم يستخدمون المتزامن readFileSync إجراء. يجب أن تدرك أن هذه الطريقة تمنع حلقة الحدث حتى يتم قراءة الملف بالكامل. ملف العينة هو 2.66 ميغابايت ، وهو ليس بهذا الحجم ، ولكن بالنسبة لملف كبير ، يمكن أن يكون هذا عملية مستهلكة للوقت وتشغيل وحدة المعالجة المركزية.

fs-extra هي حزمة NPM شهيرة توسع وظائف الأم fs الوحدة النمطية. وفقًا لاتجاهات NPM ، هناك أكثر من 105 مليون تنزيل في الأسبوع. إنه يوفر المزيد من الأساليب الصديقة للمستخدم للعمل مع نظام الملفات ، بما في ذلك طريقة مريحة لعمليات نظام الملفات ، على سبيل المثال B. قراءة ملفات JSON.

قم بتنفيذ الأمر التالي لتثبيت FS-Extra:

npm install fs-extra

التالي fs-extra حزمة NPM.

فيما يلي مثال على قراءة ملف JSON مع FS-Extra:

import { readJson } from 'fs-extra/esm';

try {
const data = await readJson('billionaires-2023.json');
console.log(data[1]);
}
catch (err) {
console.error(`Error reading JSON file: ${err}`);
}

في هذا المثال:

  1. يستوردونهم readJson تعمل مباشرة من حزمة “FS-Extra”.
  2. ال readJson تعامل الدالة على حد سواء قراءة الملف والتحليل في كائن JavaScript ، مما يبسط الكود.

بعد ذلك ، يأتي مثال قراءة ملفات JSON مع Node.js بطريقة متزامنة مع fs-extra حزمة NPM.

يمكنك أيضا استخدام readJsonSync كيفية قراءة ملف JSON المزامنة. ستجد أدناه مثالًا على استخدام readJsonSync وظيفة في fs-extra حزمة NPM:

import { readJsonSync } from 'fs-extra/esm';

try {
const data = readJsonSync('billionaires-2023.json');
console.log(data[1]);
}
catch (err) {
console.error(`Error reading JSON file: ${err}`);
}

إنه نفس مثال Asynchronized أعلاه ؛ الفرق الرئيسي هنا هو أنه يقرأ الملف المتزامن.

يستخدم fs-extra يمكن أن يقلل بشكل كبير من تعقيد الكود ويحسن قابلية القراءة ، خاصة عند تنفيذ عمليات الملفات العامة.

الكود بأكمله متاح في مستودع GitHub هذا للرجوع إليه.

دبلوم #

في هذا الدليل الشامل ، تعلمت كيفية قراءة ملفات JSON في Node.js مع كلا الأصليين fs الوحدة النمطية و fs-extra حزمة NPM. لقد فحصوا كل من النهج غير المتزامنة والمتزامنة وأبرزوا مزاياهم واعتباراتهم.

لقد درست أيضًا مثالاً في الممارسة العملية باستخدام بيانات المليارديرات لتوضيح كيفية تحليل بيانات JSON بشكل فعال والعمل معك في تطبيقات Node.js الخاصة بك. من خلال فهم المفاهيم والتقنيات المقدمة في هذا البرنامج التعليمي ، فهي مجهزة جيدًا لمعالجة أي مهمة يتم فيها قراءة بيانات JSON ومعالجتها في مشاريع Node.js الخاصة بهم.

تذكر تحديد أفضل طريقة لاحتياجاتك والنظر في عوامل مثل حجم الملف ومتطلبات الأداء وأسلوب الترميز الخاص بك. تعلم والبحث في قوة node.js لإنشاء تطبيقات ويب قوية وقابلة للتطوير.

إذا كان عليك معالجة بيانات JSON التي قرأتها ، فيمكنك أن تقرأ عن وظائف JavaScript -Sarray. إذا كنت تستخدم Nodemon لإعادة التشغيل التلقائي لخادم Node.js إذا قمت بتغيير رمز ، فستصبح أيضًا أكثر إنتاجية. ترميز سعيد!

المصدر المرجعي

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *