JSON est un format de données très courant, il est donc important de tout savoir sur ces opérations courantes.
Il est possible de lire et d'écrire des fichiers JSON dans Node.js. Tout ce que vous avez à faire est d'utiliser le module fs comme détaillé dans notre guide facile à suivre.
Lecture et écriture de fichiers JSON dans Node.js
Le format JavaScript Object Notation, communément appelé JSON, est un format de transfert de données léger largement utilisé pour représenter des données structurées. Il s’agit d’un format texte facile à lire et à écrire pour les humains et à analyser et générer par les machines.
La possibilité de lire et d'écrire par programme des fichiers JSON dans Node.js vous permet de stocker, d'échanger et de manipuler des données structurées de manière efficace et simple. Découvrez comment lire, écrire et mettre à jour des fichiers JSON à l'aide du module de système de fichiers Node.js.
Le module de système de fichiers Node.js
Le système de fichiers Node.js (fs) est intégré à Node.js. Il vous permet d'interagir avec le système de fichiers de votre appareil. Vous pouvez l'utiliser pour lire le contenu d'un fichier, créer un nouveau fichier et supprimer un fichier, entre autres.
Les méthodes proposées par le fs le module peut être soit synchrone ou asynchrone. Les méthodes synchrones bloquent l'exécution de votre programme jusqu'à ce que l'opération du système de fichiers soit terminée. Ces méthodes comportent généralement « Sync » à la fin de leur nom. Par exemple, readFileSync ou écrireFileSync.
D'un autre côté, les méthodes asynchrones ne bloquent pas l'exécution de votre programme et lui permettent de continuer à traiter d'autres tâches pendant que l'opération du système de fichiers est en cours. Ces méthodes acceptent une fonction de rappel qui s'exécutera une fois l'opération terminée. Par exemple, lireFichier ou écrireFichier.
Lorsque vous interagissez avec le système de fichiers, vous devez toujours utiliser des méthodes asynchrones pour conserver la nature non bloquante de la boucle d'événements et améliorer les performances et la réactivité de votre application.
Cependant, les méthodes synchrones ont leur place dans certains scénarios, notamment lorsque vous écrivez des scripts simples ou gérez des opérations ponctuelles sur les fichiers.
Lecture de fichiers JSON avec le module fs
Pour lire un fichier JSON, importez d'abord le fichier asynchrone fs module dans votre fichier principal. Ainsi:
const fs = require("node: fs/promises");
Si vous utilisez une version inférieure à Node.js v18, importez le fs module comme ceci :
const fs = require("fs/promises");
Si vous souhaitez importer l'intégralité du module (synchrone et asynchrone), supprimez le /promises.
Vous pouvez lire un fichier JSON en utilisant le lireFichier méthode qui prend deux arguments: un chemin de fichier et un objet de configuration facultatif. L'argument config spécifie les options de lecture du fichier et peut être un objet avec des options ou un encodage de chaîne.
Les options d'objet incluent :
- codage (chaîne, la valeur par défaut est "utf8"): Cette option spécifie le codage de caractères à utiliser lors de la lecture du fichier. Les encodages courants incluent « utf8 » pour les fichiers texte et « binaire » pour les fichiers binaires.
- drapeau (chaîne, la valeur par défaut est "r"): Cette option spécifie l'indicateur du système de fichiers utilisé lors de l'ouverture du fichier. Les indicateurs courants incluent « r » pour la lecture et « w » pour l'écriture.
Par exemple:
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);
});
Ce code lit un fichier JSON appelé utilisateurs.json dans le répertoire courant. Lorsque vous récupérez les données du fichier, vous pouvez les analyser depuis JSON dans un objet JavaScript en utilisant JSON.parse. Cela vous permet d'accéder et de manipuler les données en tant qu'objet dans votre code.
Pour les petits fichiers JSON, vous pouvez utiliser exiger pour les lire de manière synchrone. Cette méthode analyse automatiquement les fichiers JSON en objets JavaScript. Pour les fichiers JSON plus volumineux et dans les scénarios non bloquants, utilisez fs.readFichier pour les lire de manière asynchrone. De plus, en utilisant exiger met également en cache le contenu du fichier en mémoire, ce n'est donc peut-être pas idéal si votre fichier JSON change beaucoup.
Écrire des fichiers JSON avec le module fs
Vous pouvez écrire des données dans des fichiers JSON à l'aide de l'outil écrireFichier méthode. Cette méthode prend trois arguments :
- Un chemin de fichier.
- Les données que vous souhaitez écrire dans le fichier, qui peuvent être une chaîne, un tampon, un AsyncItérable, ou un objet itérable.
- Un objet de configuration facultatif.
Cette méthode écrit de manière asynchrone les données dans un fichier. Si le fichier existe, il écrase le contenu existant par le nouveau contenu. Si le fichier n'existe pas, il le crée et le remplit avec les données que vous transmettez en argument.
Par exemple:
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);
});
Les données que vous transmettez dans la fonction writeFile doivent être une chaîne ou un tampon, donc si vous souhaitez écrire un objet dans le fichier, vous devez d'abord le convertir en chaîne à l'aide de l'option JSON.stringify méthode.
Mise à jour des fichiers JSON avec le module fs
Le fs Le module ne fournit pas de moyen explicite de mettre à jour les fichiers, car l'écriture d'un fichier écrase toutes les données existantes.
Pour contourner ce problème, vous pouvez mettre à jour un fichier en récupérant d'abord le contenu existant du fichier à l'aide de l'option lireFichier méthode. Ensuite, vous pouvez ajouter les données existantes à vos données actuelles et les transmettre comme argument de données dans le écrireFichier méthode.
Voici une fonction qui implémente la logique ci-dessus :
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);
}
};
Vous pouvez appeler la fonction comme ceci :
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);
});
Ce bloc de code ajoutera les utilisateurs avec les informations ci-dessus au fichier existant utilisateurs.json déposer.
Considérations de sécurité pour la lecture et l'écriture de fichiers JSON
La protection de votre application Node.js lors de la lecture et de l'écriture de fichiers JSON implique des considérations de sécurité cruciales. Vous devez toujours valider les données JSON pour vous assurer qu'elles sont conformes à vos attentes. Vous devez également restreindre les autorisations d’accès aux fichiers et nettoyer les entrées des utilisateurs pour contrecarrer les vulnérabilités potentielles telles que l’injection de code.