JSON on väga levinud andmevorming, seega on oluline nende levinud toimingute kohta kõike õppida.
Node.js-is on võimalik lugeda ja kirjutada JSON-faile. Kõik, mida pead tegema, on kasutada fs-moodulit, nagu on kirjeldatud meie hõlpsasti jälgitavas juhendis.
JSON-failide lugemine ja kirjutamine Node.js-s
JavaScript Object Notation vorming, tuntud kui JSON, on kerge andmeedastusvorming, mida kasutatakse laialdaselt struktureeritud andmete esitamiseks. See on tekstipõhine vorming, mida inimestel on lihtne lugeda ja kirjutada ning masinatel sõeluda ja genereerida.
Võimalus programmiliselt lugeda ja kirjutada JSON-faile Node.js-s võimaldab salvestada, vahetada ja töödelda struktureeritud andmeid tõhusalt ja lihtsalt. Siit saate teada, kuidas failisüsteemi mooduli Node.js abil JSON-faile lugeda, kirjutada ja värskendada.
Failisüsteemi moodul Node.js
Node.js failisüsteem (fs) moodul on Node.js-i sisse ehitatud. See võimaldab teil oma seadme failisüsteemiga suhelda. Saate seda kasutada muu hulgas faili sisu lugemiseks, uue faili loomiseks ja faili kustutamiseks.
poolt pakutavad meetodid fs moodul võib olla kumbki sünkroonne või asünkroonne. Sünkroonsed meetodid blokeerivad teie programmi täitmise, kuni failisüsteemi toimimine on lõppenud. Nende meetodite nimede lõpus on tavaliselt "Sünkroonimine". Näiteks, loe FileSync või writeFileSync.
Teisest küljest ei blokeeri asünkroonsed meetodid teie programmi täitmist ja võimaldavad sellel failisüsteemi toimimise ajal jätkata muude toimingute töötlemist. Need meetodid aktsepteerivad tagasihelistamisfunktsiooni, mis käivitub pärast toimingu lõppemist. Näiteks, loe faili või writeFile.
Failisüsteemiga suhtlemisel peaksite alati kasutama asünkroonseid meetodeid, et säilitada sündmuste tsükli mitteblokeeriv olemus ning parandada rakenduse jõudlust ja reageerimisvõimet.
Kuid sünkroonmeetoditel on teatud stsenaariumide puhul oma koht, eriti kui kirjutate lihtsaid skripte või tegelete ühekordsete failitoimingutega.
JSON-failide lugemine fs-mooduliga
JSON-faili lugemiseks importige esmalt asünkroonne fail fs moodul oma põhifaili. Nagu nii:
const fs = require("node: fs/promises");
Kui kasutate vanemat versiooni kui Node.js v18, importige fs selline moodul:
const fs = require("fs/promises");
Kui soovite importida kogu mooduli (sünkroonne ja asünkroonne), eemaldage /promises.
JSON-faili saate lugeda, kasutades loe faili meetod, mis kasutab kahte argumenti: failitee ja valikuline konfiguratsiooniobjekt. Konfiguratsiooniargument määrab faili lugemise valikud ja võib olla suvanditega objekt või stringi kodeering.
Objekti valikud hõlmavad järgmist:
- kodeering (string, vaikimisi on "utf8"): see suvand määrab faili lugemisel kasutatava märgikodeeringu. Levinud kodeeringud hõlmavad tekstifailide jaoks "utf8" ja binaarfailide jaoks "binary".
- lipp (string, vaikimisi on "r"): see suvand määrab faili avamisel kasutatava failisüsteemi lipu. Levinud lipud hõlmavad "r" lugemiseks ja "w" kirjutamiseks.
Näiteks:
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);
});
See kood loeb JSON-faili nimega users.json praeguses kataloogis. Faili andmete toomisel saate need JSON-ist JavaScripti objektiks sõeluda, kasutades JSON.parse. See võimaldab teil koodis oleva objektina andmetele juurde pääseda ja neid töödelda.
Väikeste JSON-failide puhul saate kasutada nõuda et neid sünkroonselt lugeda. See meetod parsib JSON-failid automaatselt JavaScripti objektideks. Suuremate JSON-failide ja mitteblokeerivate stsenaariumide puhul kasutage fs.readFile et neid asünkroonselt lugeda. Lisaks kasutades nõuda salvestab ka faili sisu mällu, nii et see ei pruugi olla ideaalne, kui teie JSON-fail muutub palju.
JSON-failide kirjutamine fs-mooduliga
Saate kirjutada andmeid JSON-failidesse, kasutades writeFile meetod. Sellel meetodil on kolm argumenti:
- Faili tee.
- Andmed, mida soovite faili kirjutada, mis võivad olla string, puhver, an Asünkroonitav, või itereeritav objekt.
- Valikuline konfiguratsiooniobjekt.
See meetod kirjutab andmed asünkroonselt faili. Kui fail on olemas, kirjutab see olemasoleva sisu uue sisuga üle. Kui faili pole olemas, loob see selle ja täidab selle argumendina edastatud andmetega.
Näiteks:
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);
});
Funktsiooni writeFile edastatavad andmed peavad olema string või puhver, nii et kui soovite faili kirjutada objekti, peate selle esmalt teisendama stringiks, kasutades JSON.stringify meetod.
JSON-failide värskendamine fs-mooduliga
The fs moodul ei paku selget viisi failide värskendamiseks, kuna faili kirjutamine kirjutab kõik olemasolevad andmed üle.
Selle probleemi lahendamiseks saate faili värskendada, hankides esmalt failist olemasoleva sisu, kasutades loe faili meetod. Seejärel saate lisada olemasolevad andmed oma praegustele andmetele ja edastada need oma andmeargumendina writeFile meetod.
Siin on funktsioon, mis rakendab ülaltoodud loogikat:
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);
}
};
Funktsiooni saate kutsuda järgmiselt:
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);
});
See koodiplokk lisab ülaltoodud teabega kasutajad olemasolevasse users.json faili.
Turvakaalutlused JSON-failide lugemisel ja kirjutamisel
Rakenduse Node.js kaitsmine JSON-failide lugemisel ja kirjutamisel hõlmab olulisi turvakaalutlusi. Peaksite alati JSON-andmed kinnitama, et tagada nende vastavus teie ootustele. Samuti peaksite piirama failidele juurdepääsu õigusi ja desinfitseerima kasutaja sisendi, et takistada võimalikke haavatavusi, nagu koodi sisestamine.