JSON ist ein sehr verbreitetes Datenformat, daher ist es wichtig, alles über diese gängigen Vorgänge zu erfahren.
Es ist möglich, JSON-Dateien in Node.js zu lesen und zu schreiben. Sie müssen lediglich das fs-Modul verwenden, wie in unserer leicht verständlichen Anleitung beschrieben.
Lesen und Schreiben von JSON-Dateien in Node.js
Das JavaScript Object Notation-Format, allgemein bekannt als JSON, ist ein leichtes Datenübertragungsformat, das häufig zur Darstellung strukturierter Daten verwendet wird. Es handelt sich um ein textbasiertes Format, das für Menschen leicht zu lesen und zu schreiben und für Maschinen leicht zu analysieren und zu generieren ist.
Durch die Möglichkeit, JSON-Dateien in Node.js programmgesteuert zu lesen und zu schreiben, können Sie strukturierte Daten effizient und einfach speichern, austauschen und bearbeiten. Erfahren Sie, wie Sie JSON-Dateien mit dem Node.js-Dateisystemmodul lesen, schreiben und aktualisieren.
Das Node.js-Dateisystemmodul
Das Node.js-Dateisystem (
fs)-Modul ist in Node.js integriert. Damit können Sie mit dem Dateisystem auf Ihrem Gerät interagieren. Sie können damit unter anderem den Inhalt einer Datei lesen, eine neue Datei erstellen und eine Datei löschen.Die von der bereitgestellten Methoden fs Modul kann entweder sein synchron oder asynchron. Synchrone Methoden blockieren die Ausführung Ihres Programms, bis der Dateisystemvorgang abgeschlossen ist. Diese Methoden haben normalerweise „Sync“ am Ende ihres Namens. Zum Beispiel, readFileSync oder writeFileSync.
Andererseits blockieren asynchrone Methoden nicht die Ausführung Ihres Programms und ermöglichen ihm die weitere Verarbeitung anderer Aufgaben, während der Dateisystemvorgang ausgeführt wird. Diese Methoden akzeptieren eine Rückruffunktion, die ausgeführt wird, wenn der Vorgang abgeschlossen ist. Zum Beispiel, readFile oder writeFile.
Bei der Interaktion mit dem Dateisystem sollten Sie immer asynchrone Methoden verwenden, um die nicht blockierende Natur der Ereignisschleife aufrechtzuerhalten und die Leistung und Reaktionsfähigkeit Ihrer Anwendung zu verbessern.
Allerdings haben synchrone Methoden in bestimmten Szenarien ihre Berechtigung, insbesondere wenn Sie einfache Skripts schreiben oder sich mit einmaligen Dateivorgängen befassen.
JSON-Dateien mit dem fs-Modul lesen
Um eine JSON-Datei zu lesen, importieren Sie zunächst die asynchrone Datei fs Modul in Ihre Hauptdatei. Etwa so:
const fs = require("node: fs/promises");
Wenn Sie eine niedrigere Version verwenden als Node.js v18, importieren Sie die fs Modul wie folgt:
const fs = require("fs/promises");
Wenn Sie das gesamte Modul (synchron und asynchron) importieren möchten, entfernen Sie das /promises.
Sie können eine JSON-Datei mit lesen readFile Methode, die zwei Argumente akzeptiert: einen Dateipfad und ein optionales Konfigurationsobjekt. Das Konfigurationsargument gibt Optionen zum Lesen der Datei an und kann ein Objekt mit Optionen oder einer Zeichenfolgenkodierung sein.
Zu den Objektoptionen gehören:
- Codierung (Zeichenfolge, Standard ist „utf8“): Diese Option gibt die Zeichenkodierung an, die beim Lesen der Datei verwendet werden soll. Zu den gängigen Kodierungen gehören „utf8“ für Textdateien und „binary“ für Binärdateien.
- Flagge (Zeichenfolge, Standard ist „r“): Diese Option gibt das Dateisystem-Flag an, das beim Öffnen der Datei verwendet wird. Zu den gängigen Flags gehören „r“ zum Lesen und „w“ zum Schreiben.
Zum Beispiel:
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);
});
Dieser Code liest eine JSON-Datei namens user.json im aktuellen Verzeichnis. Wenn Sie die Daten der Datei abrufen, können Sie sie mithilfe von JSON in ein JavaScript-Objekt analysieren JSON.parse. Dadurch können Sie auf die Daten als Objekt in Ihrem Code zugreifen und sie bearbeiten.
Für kleine JSON-Dateien können Sie verwenden erfordern um sie synchron zu lesen. Diese Methode analysiert JSON-Dateien automatisch in JavaScript-Objekte. Verwenden Sie für größere JSON-Dateien und in nicht blockierenden Szenarien fs.readFile um sie asynchron zu lesen. Darüber hinaus verwenden erfordern Außerdem werden die Dateiinhalte im Speicher zwischengespeichert, sodass dies möglicherweise nicht ideal ist, wenn sich Ihre JSON-Datei häufig ändert.
JSON-Dateien mit dem fs-Modul schreiben
Mit dem können Sie Daten in JSON-Dateien schreiben writeFile Methode. Diese Methode benötigt drei Argumente:
- Ein Dateipfad.
- Die Daten, die Sie in die Datei schreiben möchten. Dabei kann es sich um eine Zeichenfolge, einen Puffer usw. handeln AsyncIterable, oder ein iterierbares Objekt.
- Ein optionales Konfigurationsobjekt.
Diese Methode schreibt Daten asynchron in eine Datei. Wenn die Datei vorhanden ist, überschreibt sie den vorhandenen Inhalt mit dem neuen Inhalt. Wenn die Datei nicht vorhanden ist, wird sie erstellt und mit den Daten gefüllt, die Sie als Argument übergeben.
Zum Beispiel:
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);
});
Die Daten, die Sie an die Funktion „writeFile“ übergeben, müssen eine Zeichenfolge oder ein Puffer sein. Wenn Sie also ein Objekt in die Datei schreiben möchten, müssen Sie es zunächst mithilfe von in eine Zeichenfolge konvertieren JSON.stringify Methode.
Aktualisieren von JSON-Dateien mit dem fs-Modul
Der fs Das Modul bietet keine explizite Möglichkeit zum Aktualisieren von Dateien, da beim Schreiben einer Datei alle vorhandenen Daten überschrieben werden.
Um dies zu umgehen, können Sie eine Datei aktualisieren, indem Sie zunächst den vorhandenen Inhalt aus der Datei mithilfe von abrufen readFile Methode. Anschließend können Sie die vorhandenen Daten zu Ihren aktuellen Daten hinzufügen und sie als Datenargument in übergeben writeFile Methode.
Hier ist eine Funktion, die die obige Logik implementiert:
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);
}
};
Sie können die Funktion folgendermaßen aufrufen:
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);
});
Dieser Codeblock fügt die Benutzer mit den oben genannten Informationen zu den vorhandenen hinzu user.json Datei.
Sicherheitsüberlegungen zum Lesen und Schreiben von JSON-Dateien
Der Schutz Ihrer Node.js-Anwendung beim Lesen und Schreiben von JSON-Dateien erfordert wichtige Sicherheitsaspekte. Sie sollten die JSON-Daten immer validieren, um sicherzustellen, dass sie Ihren Erwartungen entsprechen. Sie sollten außerdem die Dateizugriffsberechtigungen einschränken und Benutzereingaben bereinigen, um potenzielle Schwachstellen wie Code-Injection zu verhindern.