JSON este un format de date foarte comun, așa că este important să aflați totul despre aceste operațiuni comune.

Este posibil să citiți și să scrieți fișiere JSON în Node.js. Tot ce trebuie să faceți este să utilizați modulul fs așa cum este detaliat în ghidul nostru ușor de urmărit.

Citirea și scrierea fișierelor JSON în Node.js

Formatul JavaScript Object Notation, cunoscut sub numele de JSON, este un format ușor de transfer de date utilizat pe scară largă pentru reprezentarea datelor structurate. Este un format bazat pe text, care este ușor de citit și de scris pentru oameni și pentru mașini de analizat și generat.

Abilitatea de a citi și scrie în mod programatic fișiere JSON în Node.js vă permite să stocați, să schimbați și să manipulați datele structurate eficient și ușor. Aflați cum să citiți, să scrieți și să actualizați fișierele JSON folosind modulul de sistem de fișiere Node.js.

Modulul sistem de fișiere Node.js

Sistemul de fișiere Node.js (fs) este încorporat în Node.js. Vă permite să interacționați cu sistemul de fișiere de pe dispozitiv. Îl puteți folosi pentru a citi conținutul unui fișier, a crea un fișier nou și a șterge un fișier, printre altele.

instagram viewer

Metodele oferite de fs modul poate fi fie sincron sau asincron. Metodele sincrone blochează execuția programului până când operațiunea sistemului de fișiere este completă. Aceste metode au de obicei „Sincronizare” la sfârșitul numelor lor. De exemplu, citițiFileSync sau scrieFileSync.

Pe de altă parte, metodele asincrone nu blochează execuția programului și îi permit să continue procesarea altor sarcini în timp ce operațiunea sistemului de fișiere este efectuată. Aceste metode acceptă o funcție de apel invers care va rula când operația este finalizată. De exemplu, readFile sau scrie fișier.

Când interacționați cu sistemul de fișiere, ar trebui să utilizați întotdeauna metode asincrone pentru a menține natura neblocantă a buclei de evenimente și pentru a îmbunătăți performanța și capacitatea de răspuns a aplicației.

Cu toate acestea, metodele sincrone își au locul în anumite scenarii, mai ales atunci când scrieți scripturi simple sau vă ocupați de operații unice cu fișiere.

Citirea fișierelor JSON cu modulul fs

Pentru a citi un fișier JSON, importați mai întâi fișierul asincron fs modul în fișierul principal. Ca astfel:

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

Dacă utilizați o versiune mai mică decât Node.js v18, importați fs modul astfel:

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

Dacă doriți să importați întregul modul (sincron și asincron), eliminați /promises.

Puteți citi un fișier JSON folosind readFile metodă care ia două argumente: o cale de fișier și un obiect de configurare opțional. Argumentul config specifică opțiuni pentru citirea fișierului și poate fi un obiect cu opțiuni sau o codificare de șir.

Opțiunile de obiect includ:

  • codificare (şir, implicit este "utf8"): Această opțiune specifică codificarea caracterelor de utilizat când citiți fișierul. Codificările comune includ „utf8” pentru fișierele text și „binar” pentru fișierele binare.
  • steag (şir, implicit este „r”): Această opțiune specifică marcajul sistemului de fișiere utilizat la deschiderea fișierului. Steaguri comune includ „r” pentru citire și „w” pentru scriere.

De exemplu:

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

Acest cod citește un fișier JSON numit users.json în directorul curent. Când preluați datele fișierului, îl puteți analiza din JSON într-un obiect JavaScript folosind JSON.parse. Acest lucru vă permite să accesați și să manipulați datele ca obiect din codul dvs.

Pentru fișiere JSON mici, puteți utiliza cere pentru a le citi sincron. Această metodă analizează automat fișierele JSON în obiecte JavaScript. Pentru fișiere JSON mai mari și în scenarii fără blocare, utilizați fs.readFile pentru a le citi asincron. În plus, folosind cere memorează, de asemenea, conținutul fișierului în memorie, așa că ar putea să nu fie ideal dacă fișierul dvs. JSON se modifică mult.

Scrierea fișierelor JSON cu modulul fs

Puteți scrie date în fișiere JSON folosind scrie fișier metodă. Această metodă are trei argumente:

  • O cale de fișier.
  • Datele pe care doriți să le scrieți în fișier, care pot fi un șir, un buffer, un AsyncIterable, sau un obiect iterabil.
  • Un obiect de configurare opțional.

Această metodă scrie în mod asincron date într-un fișier. Dacă fișierul există, acesta suprascrie conținutul existent cu noul conținut. Dacă fișierul nu există, îl creează și îl populează cu datele pe care le transmiteți ca argument.

De exemplu:

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

Datele pe care le treceți în funcția writeFile trebuie să fie un șir sau un buffer, așa că dacă doriți să scrieți un obiect în fișier, trebuie mai întâi să îl convertiți într-un șir folosind JSON.stringify metodă.

Actualizarea fișierelor JSON cu modulul fs

The fs modulul nu oferă o modalitate explicită de actualizare a fișierelor, deoarece scrierea unui fișier suprascrie toate datele existente.

Pentru a rezolva acest lucru, puteți actualiza un fișier obținând mai întâi conținutul existent din fișier folosind readFile metodă. Apoi, puteți adăuga datele existente la datele dvs. curente și le puteți transmite ca argument de date în scrie fișier metodă.

Iată o funcție care implementează logica de mai sus:

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

Puteți apela funcția astfel:

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

Acest bloc de cod va adăuga utilizatorii cu informațiile de mai sus la cele existente users.json fişier.

Considerații de securitate pentru citirea și scrierea fișierelor JSON

Protejarea aplicației dvs. Node.js atunci când citiți și scrieți fișiere JSON implică considerații esențiale de securitate. Ar trebui să validați întotdeauna datele JSON pentru a vă asigura că sunt conforme cu așteptările dvs. De asemenea, ar trebui să restricționați permisiunile de acces la fișiere și să igienizați intrarea utilizatorului pentru a contracara potențialele vulnerabilități, cum ar fi injectarea de cod.