JSON ir ļoti izplatīts datu formāts, tāpēc ir svarīgi uzzināt visu par šīm izplatītajām darbībām.

Vietnē Node.js ir iespējams lasīt un rakstīt JSON failus. Viss, kas jums jādara, ir izmantot fs moduli, kā aprakstīts mūsu viegli izpildāmajā rokasgrāmatā.

JSON failu lasīšana un rakstīšana pakalpojumā Node.js

JavaScript objektu notācijas formāts, plaši pazīstams kā JSON, ir viegls datu pārsūtīšanas formāts, ko plaši izmanto strukturētu datu attēlošanai. Tas ir uz tekstu balstīts formāts, ko cilvēkiem ir viegli lasīt un rakstīt, bet mašīnām parsēt un ģenerēt.

Iespēja programmatiski lasīt un rakstīt JSON failus pakalpojumā Node.js, ļauj efektīvi un viegli uzglabāt, apmainīties ar strukturētiem datiem un ar tiem manipulēt. Uzziniet, kā lasīt, rakstīt un atjaunināt JSON failus, izmantojot failu sistēmas moduli Node.js.

Failu sistēmas modulis Node.js

Failu sistēma Node.js (fs) modulis ir iebūvēts Node.js. Tas ļauj mijiedarboties ar jūsu ierīces failu sistēmu. Varat to izmantot, lai cita starpā lasītu faila saturu, izveidotu jaunu failu un dzēstu failu.

Metodes, ko nodrošina fs modulis var būt vai nu sinhroni vai asinhroni. Sinhronās metodes bloķē jūsu programmas izpildi, līdz failu sistēmas darbība ir pabeigta. Šo metožu nosaukumu beigās parasti ir “Sync”. Piemēram, lasīt FileSync vai writeFileSync.

No otras puses, asinhronās metodes nebloķē jūsu programmas izpildi un ļauj tai turpināt citu uzdevumu apstrādi, kamēr tiek veikta failu sistēmas darbība. Šīs metodes pieņem atzvanīšanas funkciju, kas darbosies, kad darbība būs pabeigta. Piemēram, lasīt failu vai writeFile.

Mijiedarbojoties ar failu sistēmu, vienmēr ir jāizmanto asinhronas metodes, lai saglabātu notikumu cilpas nebloķējošo raksturu un uzlabotu lietojumprogrammas veiktspēju un atsaucību.

Tomēr sinhronajām metodēm ir sava vieta noteiktos scenārijos, it īpaši, ja rakstāt vienkāršus skriptus vai strādājat ar vienreizējām failu operācijām.

JSON failu lasīšana, izmantojot fs moduli

Lai lasītu JSON failu, vispirms importējiet asinhrono failu fs moduli savā galvenajā failā. Tā kā:

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

Ja izmantojat versiju, kas ir vecāka par Node.js v18, importēt fs šāds modulis:

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

Ja vēlaties importēt visu moduli (sinhrono un asinhrono), noņemiet /promises.

Varat lasīt JSON failu, izmantojot lasīt failu metode, kas izmanto divus argumentus: faila ceļu un neobligātu konfigurācijas objektu. Konfigurācijas arguments norāda faila lasīšanas opcijas, un tas var būt objekts ar opcijām vai virknes kodējums.

Objekta opcijas ietver:

  • kodējums (virkne, noklusējuma vērtība ir "utf8"): šī opcija norāda rakstzīmju kodējumu, kas jāizmanto, lasot failu. Parastie kodējumi ietver "utf8" teksta failiem un "bināro" binārajiem failiem.
  • karogs (virkne, noklusējuma vērtība ir "r"): šī opcija norāda failu sistēmas karogu, kas tiek izmantots, atverot failu. Parastie karodziņi ietver "r" lasīšanai un "w" rakstīšanai.

Piemēram:

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);
});

Šis kods nolasa JSON failu, ko sauc users.json pašreizējā direktorijā. Izgūstot faila datus, varat tos parsēt no JSON JavaScript objektā, izmantojot JSON.parse. Tas ļauj piekļūt datiem un manipulēt ar tiem kā objektam savā kodā.

Nelieliem JSON failiem varat izmantot pieprasīt lai tos lasītu sinhroni. Šī metode automātiski parsē JSON failus JavaScript objektos. Lielākiem JSON failiem un nebloķējošos scenārijos izmantojiet fs.readFile lai tos lasītu asinhroni. Turklāt, izmantojot pieprasīt arī saglabā faila saturu atmiņā, tāpēc tas var nebūt ideāli, ja jūsu JSON fails daudz mainās.

JSON failu rakstīšana, izmantojot fs moduli

Varat rakstīt datus JSON failos, izmantojot writeFile metodi. Šai metodei ir trīs argumenti:

  • Faila ceļš.
  • Dati, kurus vēlaties rakstīt failā, kas var būt virkne, buferis vai Asinhronizējams, vai iterējams objekts.
  • Izvēles konfigurācijas objekts.

Šī metode asinhroni ieraksta datus failā. Ja fails pastāv, tas pārraksta esošo saturu ar jauno saturu. Ja fails neeksistē, tas to izveido un aizpilda ar datiem, kurus nododat kā argumentu.

Piemēram:

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);
});

Datiem, ko nododat funkcijai writeFile, ir jābūt virknei vai buferim, tādēļ, ja vēlaties failā ierakstīt objektu, vispirms tas ir jāpārveido par virkni, izmantojot JSON.stringify metodi.

JSON failu atjaunināšana, izmantojot fs moduli

The fs modulis nenodrošina skaidru veidu, kā atjaunināt failus, jo, rakstot failu, tiek pārrakstīti visi esošie dati.

Lai to novērstu, varat atjaunināt failu, vispirms iegūstot esošo saturu no faila, izmantojot lasīt failu metodi. Pēc tam varat pievienot esošos datus saviem pašreizējiem datiem un nodot tos kā datu argumentu writeFile metodi.

Šeit ir funkcija, kas īsteno iepriekš minēto loģiku:

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);
}
};

Funkciju var izsaukt šādi:

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);
});

Šis koda bloks pievienos esošos lietotājus ar iepriekš minēto informāciju users.json failu.

Drošības apsvērumi JSON failu lasīšanai un rakstīšanai

Node.js lietojumprogrammas aizsardzība, lasot un rakstot JSON failus, ir saistīta ar būtiskiem drošības apsvērumiem. Jums vienmēr ir jāpārbauda JSON dati, lai nodrošinātu, ka tie atbilst jūsu cerībām. Jums ir arī jāierobežo faila piekļuves atļaujas un jātīra lietotāja ievade, lai novērstu iespējamās ievainojamības, piemēram, koda ievadīšanu.