JSON on hyvin yleinen tietomuoto, joten on tärkeää oppia kaikki näistä yleisistä toiminnoista.

Node.js: ssä on mahdollista lukea ja kirjoittaa JSON-tiedostoja. Sinun tarvitsee vain käyttää fs-moduulia helposti seurattavassa oppaassamme kuvatulla tavalla.

JSON-tiedostojen lukeminen ja kirjoittaminen Node.js: ssä

JavaScript Object Notation -muoto, joka tunnetaan yleisesti nimellä JSON, on kevyt tiedonsiirtomuoto, jota käytetään laajalti jäsenneltyjen tietojen esittämiseen. Se on tekstipohjainen muoto, jota ihmisten on helppo lukea ja kirjoittaa ja koneiden jäsentää ja luoda.

Kyky ohjelmallisesti lukea ja kirjoittaa JSON-tiedostoja Node.js: ssä mahdollistaa strukturoitujen tietojen tallentamisen, vaihtamisen ja käsittelyn tehokkaasti ja helposti. Opi lukemaan, kirjoittamaan ja päivittämään JSON-tiedostoja Node.js-tiedostojärjestelmämoduulin avulla.

Node.js-tiedostojärjestelmämoduuli

Node.js-tiedostojärjestelmä (fs) -moduuli on sisäänrakennettu Node.js: ään. Sen avulla voit olla vuorovaikutuksessa laitteesi tiedostojärjestelmän kanssa. Voit käyttää sitä muun muassa lukemaan tiedoston sisältöä, luomaan uuden tiedoston ja poistamaan tiedoston.

instagram viewer

Tarjoamat menetelmät fs moduuli voi olla joko synkroninen tai asynkroninen. Synkroniset menetelmät estävät ohjelman suorittamisen, kunnes tiedostojärjestelmän toiminta on valmis. Näillä menetelmillä on yleensä "Sync" niiden nimien lopussa. Esimerkiksi, lue FileSync tai writeFileSync.

Toisaalta asynkroniset menetelmät eivät estä ohjelman suorittamista ja salli sen jatkaa muiden tehtävien käsittelyä tiedostojärjestelmän toiminnan aikana. Nämä menetelmät hyväksyvät takaisinsoittotoiminnon, joka suoritetaan, kun toiminto on valmis. Esimerkiksi, lue tiedosto tai kirjoitustiedosto.

Kun olet vuorovaikutuksessa tiedostojärjestelmän kanssa, sinun tulee aina käyttää asynkronisia menetelmiä ylläpitääksesi tapahtumasilmukan estokykyä ja parantaaksesi sovelluksesi suorituskykyä ja reagointikykyä.

Synkronisilla menetelmillä on kuitenkin paikkansa tietyissä skenaarioissa, varsinkin kun kirjoitat yksinkertaisia ​​skriptejä tai käsittelet kertaluonteisia tiedostotoimintoja.

JSON-tiedostojen lukeminen fs-moduulilla

Jos haluat lukea JSON-tiedoston, tuo ensin asynkroninen tiedosto fs moduuli päätiedostoosi. Niin kuin:

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

Jos käytät vanhempaa versiota kuin Node.js v18, tuoda fs tällainen moduuli:

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

Jos haluat tuoda koko moduulin (synkroninen ja asynkroninen), poista /promises.

Voit lukea JSON-tiedoston käyttämällä lue tiedosto menetelmä, joka ottaa kaksi argumenttia: tiedostopolun ja valinnaisen konfigurointiobjektin. Config-argumentti määrittää vaihtoehdot tiedoston lukemiseen, ja se voi olla objekti optioineen tai merkkijonokoodaus.

Objektivaihtoehtoja ovat:

  • koodaus (merkkijono, oletus on "utf8"): Tämä vaihtoehto määrittää tiedoston lukemiseen käytettävän merkkikoodauksen. Yleisiä koodauksia ovat "utf8" tekstitiedostoille ja "binary" binääritiedostoille.
  • lippu (merkkijono, oletusarvo on "r"): Tämä vaihtoehto määrittää tiedostojärjestelmän lipun, jota käytetään tiedoston avaamisessa. Yleisiä lippuja ovat "r" lukemiseen ja "w" kirjoittamiseen.

Esimerkiksi:

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

Tämä koodi lukee JSON-tiedoston nimeltä users.json nykyisessä hakemistossa. Kun haet tiedoston tiedot, voit jäsentää sen JSONista JavaScript-objektiksi käyttämällä JSON.parse. Tämän avulla voit käyttää ja käsitellä tietoja koodisi objektina.

Pienille JSON-tiedostoille voit käyttää vaatia lukea niitä synkronisesti. Tämä menetelmä jäsentää JSON-tiedostot automaattisesti JavaScript-objekteiksi. Käytä suurempia JSON-tiedostoja ja ei-estotilanteissa fs.readFile lukea ne asynkronisesti. Lisäksi käyttämällä vaatia tallentaa myös tiedoston sisällön välimuistiin, joten se ei ehkä ole ihanteellinen, jos JSON-tiedostosi muuttuu paljon.

JSON-tiedostojen kirjoittaminen fs-moduulilla

Voit kirjoittaa tietoja JSON-tiedostoihin käyttämällä kirjoitustiedosto menetelmä. Tämä menetelmä vaatii kolme argumenttia:

  • Tiedoston polku.
  • Tiedot, jotka haluat kirjoittaa tiedostoon, joka voi olla merkkijono, puskuri tai muu Asynkronoitu, tai iteroitava objekti.
  • Valinnainen konfigurointiobjekti.

Tämä menetelmä kirjoittaa tiedot asynkronisesti tiedostoon. Jos tiedosto on olemassa, se korvaa olemassa olevan sisällön uudella sisällöllä. Jos tiedostoa ei ole olemassa, se luo sen ja täyttää sen argumenttina antamallasi tiedolla.

Esimerkiksi:

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

WriteFile-funktioon siirrettävien tietojen on oltava merkkijono tai puskuri, joten jos haluat kirjoittaa tiedostoon objektin, sinun on ensin muutettava se merkkijonoksi käyttämällä JSON.stringify menetelmä.

JSON-tiedostojen päivittäminen fs-moduulilla

The fs moduuli ei tarjoa selkeää tapaa päivittää tiedostoja, koska tiedoston kirjoittaminen korvaa olemassa olevat tiedot.

Voit kiertää tämän päivittämällä tiedoston hakemalla ensin olemassa olevan sisällön tiedostosta käyttämällä lue tiedosto menetelmä. Sitten voit lisätä olemassa olevat tiedot nykyisiin tietoihisi ja välittää ne data-argumenttinasi kirjoitustiedosto menetelmä.

Tässä on toiminto, joka toteuttaa yllä olevan logiikan:

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

Voit kutsua funktiota seuraavasti:

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

Tämä koodilohko lisää käyttäjät, joilla on yllä olevat tiedot, olemassa oleviin users.json tiedosto.

Turvallisuusnäkökohdat JSON-tiedostojen lukemiseen ja kirjoittamiseen

Node.js-sovelluksesi suojaaminen JSON-tiedostoja luettaessa ja kirjoitettaessa sisältää tärkeitä turvallisuusnäkökohtia. Sinun tulee aina vahvistaa JSON-tiedot varmistaaksesi, että ne vastaavat odotuksiasi. Sinun tulee myös rajoittaa tiedostojen käyttöoikeuksia ja puhdistaa käyttäjän syöte estääksesi mahdolliset haavoittuvuudet, kuten koodin lisääminen.