JSON er et veldig vanlig dataformat, så det er viktig å lære alt om disse vanlige operasjonene.
Det er mulig å lese og skrive JSON-filer i Node.js. Alt du trenger å gjøre er å bruke fs-modulen som beskrevet i vår lett-å-følge guide.
Lese og skrive JSON-filer i Node.js
JavaScript Object Notation-formatet, populært kjent som JSON, er et lett dataoverføringsformat som er mye brukt for å representere strukturerte data. Det er et tekstbasert format som er enkelt for mennesker å lese og skrive og for maskiner å analysere og generere.
Evnen til å programmatisk lese og skrive JSON-filer i Node.js lar deg lagre, utveksle og manipulere strukturerte data effektivt og enkelt. Lær hvordan du leser, skriver og oppdaterer JSON-filer ved å bruke Node.js-filsystemmodulen.
Node.js filsystemmodul
Node.js filsystemet (fs)-modulen er innebygd i Node.js. Den lar deg samhandle med filsystemet på enheten din. Du kan bruke den til å lese innholdet i en fil, opprette en ny fil og slette en fil, blant annet.
Metodene gitt av
fs modul kan enten være synkron eller asynkron. Synkrone metoder blokkerer kjøringen av programmet til filsystemoperasjonen er fullført. Disse metodene har vanligvis "Sync" på slutten av navnene. For eksempel, readFileSync eller skriveFileSync.På den annen side blokkerer ikke asynkrone metoder kjøringen av programmet og lar det fortsette å behandle andre oppgaver mens filsystemoperasjonen utføres. Disse metodene godtar en tilbakeringingsfunksjon som vil kjøre når operasjonen er fullført. For eksempel, lesefil eller skrivefil.
Når du samhandler med filsystemet, bør du alltid bruke asynkrone metoder for å opprettholde den ikke-blokkerende naturen til hendelsesløkken og forbedre applikasjonens ytelse og respons.
Synkrone metoder har imidlertid sin plass i visse scenarier, spesielt når du skriver enkle skript eller arbeider med engangsfiloperasjoner.
Lese JSON-filer med fs-modulen
For å lese en JSON-fil, importer først den asynkrone fs modul inn i hovedfilen din. Som så:
const fs = require("node: fs/promises");
Hvis du bruker en versjon lavere enn Node.js v18, importer fs modul som dette:
const fs = require("fs/promises");
Hvis du vil importere hele modulen (synkron og asynkron), fjern /promises.
Du kan lese en JSON-fil ved å bruke lesefil metode som tar to argumenter: en filbane og et valgfritt konfigurasjonsobjekt. Config-argumentet spesifiserer alternativer for å lese filen og kan være et objekt med alternativer eller en strengkoding.
Objektalternativene inkluderer:
- koding (streng, standard er "utf8"): Dette alternativet spesifiserer tegnkodingen som skal brukes ved lesing av filen. Vanlige kodinger inkluderer "utf8" for tekstfiler og "binær" for binære filer.
- flagg (streng, standard er "r"): Dette alternativet spesifiserer filsystemflagget som brukes når filen åpnes. Vanlige flagg inkluderer "r" for lesing og "w" for skriving.
For eksempel:
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);
});
Denne koden leser en JSON-fil kalt users.json i gjeldende katalog. Når du henter filens data, kan du analysere den fra JSON til et JavaScript-objekt ved hjelp av JSON.parse. Dette lar deg få tilgang til og manipulere dataene som et objekt i koden din.
For små JSON-filer kan du bruke krever å lese dem synkront. Denne metoden analyserer JSON-filer automatisk til JavaScript-objekter. For større JSON-filer og i ikke-blokkerende scenarier, bruk fs.readFile å lese dem asynkront. I tillegg bruker krever bufrer også filinnholdet i minnet, så det er kanskje ikke ideelt hvis JSON-filen endres mye.
Skrive JSON-filer med fs-modulen
Du kan skrive data til JSON-filer ved å bruke skrivefil metode. Denne metoden tar tre argumenter:
- En filbane.
- Dataene du vil skrive til filen, som kan være en streng, en buffer, en Asynkroniserbar, eller et gjentakbart objekt.
- Et valgfritt konfigurasjonsobjekt.
Denne metoden skriver asynkront data til en fil. Hvis filen eksisterer, overskriver den det eksisterende innholdet med det nye innholdet. Hvis filen ikke eksisterer, oppretter den den og fyller den med dataene du sender som argument.
For eksempel:
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);
});
Dataene du sender inn i writeFile-funksjonen må være en streng eller en buffer, så hvis du vil skrive et objekt til filen, må du først konvertere det til en streng ved å bruke JSON.stringify metode.
Oppdatere JSON-filer med fs-modulen
De fs Modulen gir ikke en eksplisitt måte å oppdatere filer på, da skriving av en fil overskriver eksisterende data.
For å omgå dette kan du oppdatere en fil ved først å hente det eksisterende innholdet fra filen ved å bruke lesefil metode. Deretter kan du legge til eksisterende data til gjeldende data og sende dem som dataargumentet i skrivefil metode.
Her er en funksjon som implementerer logikken ovenfor:
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);
}
};
Du kan kalle funksjonen slik:
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);
});
Denne kodeblokken vil legge brukerne med informasjonen ovenfor til den eksisterende users.json fil.
Sikkerhetshensyn for lesing og skriving av JSON-filer
Beskyttelse av Node.js-applikasjonen når du leser og skriver JSON-filer, innebærer avgjørende sikkerhetshensyn. Du bør alltid validere JSON-dataene for å sikre at de samsvarer med dine forventninger. Du bør også begrense filtilgangstillatelser og rense brukerinndata for å hindre potensielle sårbarheter som kodeinjeksjon.