A JSON egy nagyon gyakori adatformátum, ezért fontos mindent megtudni ezekről a gyakori műveletekről.
Lehetőség van JSON-fájlok olvasására és írására a Node.js-ben. Mindössze annyit kell tennie, hogy használja az fs modult a könnyen követhető útmutatónk szerint.
JSON-fájlok olvasása és írása a Node.js-ben
A JavaScript Object Notation formátum, közismertebb nevén JSON, egy könnyű adatátviteli formátum, amelyet széles körben használnak strukturált adatok megjelenítésére. Ez egy szövegalapú formátum, amelyet az emberek könnyen olvashatnak és írhatnak, a gépek pedig elemezhetnek és generálhatnak.
A Node.js-ben lévő JSON-fájlok programozott olvasásának és írásának képessége lehetővé teszi a strukturált adatok hatékony és egyszerű tárolását, cseréjét és kezelését. Ismerje meg, hogyan olvashat, írhat és frissíthet JSON-fájlokat a Node.js fájlrendszer-modul használatával.
A Node.js fájlrendszer modul
A Node.js fájlrendszer (fs) modul a Node.js-be van beépítve. Lehetővé teszi az eszközén lévő fájlrendszerrel való interakciót. Használhatja többek között egy fájl tartalmának olvasására, új fájl létrehozására és fájl törlésére.
által biztosított módszerek a fs modul bármelyik lehet szinkron vagy aszinkron. A szinkron módszerek blokkolják a program végrehajtását, amíg a fájlrendszer működése be nem fejeződik. Ezeknek a módszereknek a nevük végén általában a "Sync" szerepel. Például, readFileSync vagy writeFileSync.
Másrészt az aszinkron metódusok nem blokkolják a program végrehajtását, és lehetővé teszik, hogy a fájlrendszer művelete közben más feladatokat is feldolgozzon. Ezek a módszerek elfogadnak egy visszahívási függvényt, amely a művelet befejeztével fut le. Például, readFile vagy writeFile.
A fájlrendszerrel való interakció során mindig aszinkron módszereket kell használnia az eseményhurok nem blokkoló jellegének megőrzése és az alkalmazás teljesítményének és válaszkészségének javítása érdekében.
A szinkron módszereknek azonban megvan a helyük bizonyos forgatókönyvekben, különösen akkor, ha egyszerű szkripteket ír, vagy egyszeri fájlműveletekkel foglalkozik.
JSON-fájlok olvasása az fs modullal
JSON-fájl olvasásához először importálja az aszinkron fájlt fs modult a fő fájlba. Például így:
const fs = require("node: fs/promises");
Ha ennél régebbi verziót használ Node.js v18, importálja a fs ilyen modul:
const fs = require("fs/promises");
Ha a teljes modult (szinkron és aszinkron) importálni szeretné, távolítsa el a /promises.
A JSON-fájlt a readFile módszer, amely két argumentumot használ: egy fájl elérési utat és egy opcionális konfigurációs objektumot. A config argumentum megadja a fájl olvasásának beállításait, és lehet egy objektum opciókkal vagy egy karakterlánc kódolás.
Az objektum opciók a következők:
- kódolás (húr, az alapértelmezett "utf8"): Ez a beállítás a fájl olvasásakor használandó karakterkódolást határozza meg. A gyakori kódolások közé tartozik az "utf8" a szöveges fájlok és a "bináris" a bináris fájlok esetében.
- zászló (húr, az alapértelmezett az "r"): Ez az opció a fájl megnyitásakor használt fájlrendszer jelzőt adja meg. A gyakori zászlók közé tartozik az "r" az olvasáshoz és a "w" az íráshoz.
Például:
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);
});
Ez a kód egy JSON-fájlt olvas be users.json az aktuális könyvtárban. Amikor lekéri a fájl adatait, a JSON-ból JavaScript objektummá elemezheti a használatával JSON.parse. Ez lehetővé teszi az adatokhoz való hozzáférést és a kódban lévő objektumok kezelését.
Kisméretű JSON-fájlok esetén használhatja igényelnek hogy szinkronban olvassa el őket. Ez a módszer automatikusan elemzi a JSON-fájlokat JavaScript objektumokká. Nagyobb JSON-fájlokhoz és nem blokkoló forgatókönyvekhez használja fs.readFile hogy aszinkron módon olvassa el őket. Ezen kívül a használata igényelnek a fájl tartalmát is gyorsítótárazza a memóriában, így nem biztos, hogy ideális, ha a JSON-fájl sokat változik.
JSON-fájlok írása az fs-modullal
Adatokat írhat JSON-fájlokba a writeFile módszer. Ez a módszer három érvet használ:
- Egy fájl elérési útja.
- A fájlba írni kívánt adat, amely lehet egy karakterlánc, egy puffer, egy AsyncIterable, vagy egy iterálható objektum.
- Egy opcionális konfigurációs objektum.
Ez a módszer aszinkron módon ír adatokat egy fájlba. Ha a fájl létezik, felülírja a meglévő tartalmat az új tartalommal. Ha a fájl nem létezik, akkor létrehozza, és feltölti az argumentumként átadott adatokkal.
Például:
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);
});
A writeFile függvénybe átadott adatoknak karakterláncnak vagy puffernek kell lenniük, tehát ha objektumot akarunk írni a fájlba, először karakterláncsá kell konvertálni a JSON.stringify módszer.
JSON-fájlok frissítése az fs-modullal
A fs modul nem ad kifejezett módot a fájlok frissítésére, mivel egy fájl írása felülír minden meglévő adatot.
Ennek megkerüléséhez frissíthet egy fájlt úgy, hogy először lekéri a fájlból a meglévő tartalmat a readFile módszer. Ezután hozzáadhatja a meglévő adatokat az aktuális adatokhoz, és átadhatja azokat adatargumentumként a writeFile módszer.
Itt van egy függvény, amely megvalósítja a fenti logikát:
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);
}
};
A függvényt így hívhatja meg:
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);
});
Ez a kódblokk hozzáadja a fenti információkkal rendelkező felhasználókat a meglévőkhöz users.json fájlt.
Biztonsági szempontok a JSON-fájlok olvasásához és írásához
A Node.js-alkalmazás védelme JSON-fájlok olvasása és írása során alapvető biztonsági szempontokat foglal magában. Mindig ellenőriznie kell a JSON-adatokat, hogy megbizonyosodjon arról, hogy megfelelnek az elvárásoknak. Ezenkívül korlátoznia kell a fájlhozzáférési engedélyeket, és meg kell tisztítania a felhasználói bevitelt, hogy megakadályozza a lehetséges sebezhetőségeket, például a kódbefecskendezést.