ЈСОН је веома уобичајен формат података, тако да је важно научити све о овим уобичајеним операцијама.

Могуће је читати и писати ЈСОН датотеке у Ноде.јс. Све што треба да урадите је да користите модул фс како је детаљно описано у нашем водичу који је једноставан за праћење.

Читање и писање ЈСОН датотека у Ноде.јс

ЈаваСцрипт формат нотације објеката, популарно познат као ЈСОН, је лагани формат за пренос података који се широко користи за представљање структурираних података. То је формат заснован на тексту који је људима лак за читање и писање, а машинама за рашчлањивање и генерисање.

Могућност програмског читања и писања ЈСОН датотека у Ноде.јс омогућава вам да ефикасно и лако складиштите, размењујете и манипулишете структурираним подацима. Научите како да читате, пишете и ажурирате ЈСОН датотеке помоћу модула система датотека Ноде.јс.

Модул система датотека Ноде.јс

Систем датотека Ноде.јс (фс) модул је уграђен у Ноде.јс. Омогућава вам интеракцију са системом датотека на вашем уређају. Можете га користити за читање садржаја датотеке, креирање нове датотеке и брисање датотеке, између осталог.

instagram viewer

Методе које пружа фс модул може бити синхрони или асинхрони. Синхроне методе блокирају извршавање вашег програма све док се операција система датотека не заврши. Ове методе обично имају „Синц“ на крају својих имена. На пример, реадФилеСинц или вритеФилеСинц.

С друге стране, асинхроне методе не блокирају извршавање вашег програма и дозвољавају му да настави са обрадом других задатака док се операција система датотека обавља. Ове методе прихватају функцију повратног позива која ће се покренути када се операција заврши. На пример, реадФиле или вритеФиле.

Када комуницирате са системом датотека, увек треба да користите асинхроне методе да бисте одржали неблокирајућу природу петље догађаја и побољшали перформансе и одзив ваше апликације.

Међутим, синхроне методе имају своје место у одређеним сценаријима, посебно када пишете једноставне скрипте или се бавите једнократним операцијама датотека.

Читање ЈСОН датотека помоћу модула фс

Да бисте прочитали ЈСОН датотеку, прво увезите асинхрони фс модул у вашу главну датотеку. Овако:

const fs = require("node: fs/promises");

Ако користите верзију нижу од Ноде.јс в18, импорт тхе фс модул овако:

const fs = require("fs/promises");

Ако желите да увезете цео модул (синхрони и асинхрони), уклоните /promises.

Можете прочитати ЈСОН датотеку користећи реадФиле метод који узима два аргумента: путању датотеке и опциони конфигурациони објекат. Аргумент цонфиг специфицира опције за читање датотеке и може бити објекат са опцијама или стринг кодирањем.

Опције објекта укључују:

  • кодирање (низ, подразумевано је "утф8"): Ова опција одређује кодирање знакова које ће се користити приликом читања датотеке. Уобичајена кодирања укључују "утф8" за текстуалне датотеке и "бинарне" за бинарне датотеке.
  • застава (низ, подразумевано је "р"): Ова опција одређује ознаку система датотека која се користи приликом отварања датотеке. Уобичајене заставице укључују "р" за читање и "в" за писање.

На пример:

fs.readFile("./users.json", { encoding: "utf-8", flag: "r" })
.then((data) => {
const users = JSON.parse(data);
console.log(users);
})
.catch((error) => {
console.error('Error reading the JSON file:', error);
});

Овај код чита ЈСОН датотеку под називом усерс.јсон у тренутном директоријуму. Када преузмете податке датотеке, можете их рашчланити из ЈСОН-а у ЈаваСцрипт објекат помоћу ЈСОН.парсе. Ово вам омогућава да приступите подацима и манипулишете њима као објектом у вашем коду.

За мале ЈСОН датотеке можете користити захтевају да их читају синхроно. Овај метод аутоматски анализира ЈСОН датотеке у ЈаваСцрипт објекте. За веће ЈСОН датотеке и у сценаријима без блокирања, користите фс.реадФиле да их асинхроно чита. Поред тога, коришћењем захтевају такође кешира садржај датотеке у меморији, тако да можда није идеално ако се ваша ЈСОН датотека много мења.

Писање ЈСОН датотека помоћу модула фс

Можете писати податке у ЈСОН датотеке користећи вритеФиле методом. Овај метод узима три аргумента:

  • Путања датотеке.
  • Подаци које желите да упишете у датотеку, а то може бити стринг, бафер, ан АсинцИтерабле, или итерабле објекат.
  • Опциони објекат конфигурације.

Овај метод асинхроно уписује податке у датотеку. Ако датотека постоји, она замењује постојећи садржај новим садржајем. Ако датотека не постоји, креира је и попуњава је подацима које проследите као аргумент.

На пример:

const fakeUsers = [
{
id: 1,
name: "John Doe",
username: "johndoe123",
address: {
street: "123 Main St",
city: "Anytown",
},
},
{
id: 2,
name: "Jane Smith",
username: "janesmith456",
address: {
street: "456 Elm St",
city: "Another City",
},
}
];

fs.writeFile("./users.json", JSON.stringify(fakeUsers), {
encoding: "utf-8",
flag: "w",
}).catch((error) => {
console.error('Error writing the JSON file:', error);
});

Подаци које прослеђујете у функцију вритеФиле морају бити стринг или бафер, тако да ако желите да упишете објекат у датотеку, прво морате да га конвертујете у стринг користећи ЈСОН.стрингифи методом.

Ажурирање ЈСОН датотека помоћу модула фс

Тхе фс модул не пружа експлицитан начин ажурирања датотека, пошто писање датотеке замењује све постојеће податке.

Да бисте заобишли ово, можете ажурирати датотеку тако што ћете прво преузети постојећи садржај из датотеке помоћу реадФиле методом. Затим можете додати постојеће податке својим тренутним подацима и проследити их као аргумент података у вритеФиле методом.

Ево функције која имплементира горњу логику:

const updateFile = async (filePath, data) => {
try {
const fileContents = await fs.readFile(filePath, {
encoding: "utf-8",
flag: "r",
});

const fileData = JSON.parse(fileContents);

const updatedFileData = [...fileData, ...data];

await fs.writeFile(filePath, JSON.stringify(updatedFileData), {
encoding: "utf-8",
flag: "w",
});

return"File updated successfully";
} catch (error) {
console.error('Error updating the JSON file:', error);
}
};

Функцију можете позвати на следећи начин:

updateFile("./users.json", [
{
id: 4,
name: "Jane Doe",
username: "janedoe123",
address: {
street: "123 Main St",
city: "Anytown",
},
},
{
id: 5,
name: "John Smith",
username: "johnsmith456",
address: {
street: "456 Elm St",
city: "Another City",
},
}
]).then((message) => {
console.log(message);
});

Овај блок кода ће додати кориснике са горе наведеним информацијама постојећим усерс.јсон фајл.

Безбедносна разматрања за читање и писање ЈСОН датотека

Заштита ваше Ноде.јс апликације приликом читања и писања ЈСОН датотека укључује кључна питања безбедности. Увек треба да потврдите ЈСОН податке да бисте били сигурни да су у складу са вашим очекивањима. Такође би требало да ограничите дозволе за приступ датотекама и дезинфикујете унос корисника да бисте спречили потенцијалне рањивости као што је убацивање кода.