تحليل JSON باستخدام Node.js

كيفية تحليل JSON من سلسلة ، وكيفية قراءة ملف JSON في Node.js

اذا كنت تمتلكجسونالبيانات كجزء من سلسلة ، فإن أفضل طريقة لتحليلها هي استخدام الامتدادJSON.parseالطريقة التي تعد جزءًا من معيار JavaScript منذ ECMAScript 5 ، ويتم توفيرها بواسطةV8، محرك JavaScript المسؤولNode.js.

مثال:

const data = '{ "name": "Flavio", "age": 35 }'
try {
  const user = JSON.parse(data)
} catch(err) {
  console.error(err)
}

لاحظ أنJSON.parseمتزامن ، لذلك كلما زاد حجم ملف JSON ، زاد الوقت الذي سيتم فيه حظر تنفيذ البرنامج حتى ينتهي تحليل JSON.

يمكنك معالجة JSON بشكل غير متزامن عن طريق لفه في ملفيعدواستدعاء setTimeout ، الذي يتأكد من إجراء التحليل في التكرار التالي لحلقة الحدث:

const parseJsonAsync = (jsonString) => {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(JSON.parse(jsonString))
    })
  })
}

const data = ‘{ “name”: “Flavio”, “age”: 35 }’ parseJsonAsync(data).then(jsonData => console.log(jsonData))

إذا كان JSON الخاص بك موجودًا في ملف بدلاً من ذلك ، فيجب عليك أولاً قراءته.

طريقة بسيطة للغاية للقيام بذلك هي استخدامrequire():

const data = require('./file.json')

منذ أن استخدمت ملف.jsonتمديد،require()ذكي بما يكفي لفهم ذلك ، وتحليل JSON في ملفdataموضوع.

أحد التحذيرات هو أن قراءة الملف متزامنة. بالإضافة إلى ذلك ، يتم تخزين نتيجة استدعاء request () مؤقتًا ، لذلك إذا اتصلت به مرة أخرى لأنك قمت بتحديث الملف ، فلن تحصل على المحتويات الجديدة حتى يتم إنهاء البرنامج.

تم توفير هذه الميزة لاستخدام ملف JSON لتهيئة التطبيق ، وهي حالة استخدام صالحة تمامًا.

يمكنك أيضًا قراءة الملف يدويًا باستخدامfs.readFileSync:

const fs = require('fs')
const fileContents = fs.readFileSync('./file.json', 'utf8')

try { const data = JSON.parse(fileContents) } catch(err) { console.error(err) }

هذا يقرأ الملف بشكل متزامن.

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

const fs = require('fs')

fs.readFile(’/path/to/file.json’, ‘utf8’, (err, fileContents) => { if (err) { console.error(err) return } try { const data = JSON.parse(fileContents) } catch(err) { console.error(err) } })

تحميل مجانيكتيب Node.js


المزيد من دروس العقدة: