Ecrire et lire des fichiers JSON avec Node JS<span class="wtr-time-wrap after-title"><span class="wtr-time-number">7</span> min read</span>
node js écrire et lire des fichiers

Ecrire et lire des fichiers JSON avec Node JS7 min read

Une des meilleure façon d’échanger des informations entre deux applications est d’utiliser le format JSON (javascript object notation). Ce format est très simple et as au cours de ces dernières années , totalement remplacé le XML.

Avec l’augmentation de l’utilisation de JSON dans les logiciels et les applications webs, il est important de savoir lire et écrire dans des fichiers JSON. Dans cet article, nous allons voir comment faire ceci.

Lire un fichier JSON avec Node JS

Voyons d’abord comment on peux lire des fichiers JSON via Node JS. Avant de pouvoir lire le fichier JSON, nous devons le créer. Ouvrez un nouveau fichier dans votre éditeur de texte et ajouter le texte suivant :

{
    "prenom" : "Stephane",
    "age": 48,
    "genre" : "homme",
    "passion" : "jeux-vidéos, informatique",
    "taille" : 180
}

Sauvegardez ce fichier avec le nom “personne.json” dans votre dossier.

Pour lire ce fichier, nous pouvons utiliser le module fs de Node JS. Il y a deux fonctions disponibles, readFile et readFileSync.

Ces deux fonctions ont le même objectif, lire un fichier. Elles vont ouvrir le fichier et récupérer son contenu. Après, c’est à nous de le traiter pour récupérer les informations sous le format JSON.

Utiliser fs.readFileSync

La fonction readFileSync lis les données d’un fichier de manière synchrone. La fonction bloque le code durant la lecture du fichier jusqu’à ce que tout soit lu. Cette fonction est pratique lorsqu’une application doit avoir impérativement lu un fichier de configuration avant de commencer à s’exécuter.

Voyons maintenant comment lire notre fichier “personne.json” avec cette fonction. Pour se faire, ajoutez le code suivant à un fichier “.js”

const fs = require('fs')
let fichier = fs.readFileSync('personne.json')
let personne = JSON.parse(fichier)
console.log(personne)

Dans le code ci-dessus, on charge d’abord le module fs dans le script. Ensuite, on appelle la fonction readFileSync en lui donnant comme arguments le chemin relatif vers notre fichier JSON. On range ce résultat dans une variable appelée “fichier”. Ensuite, on appelle la fonction “JSON.parse()” en lui passant notre fichier comme variable. Cette fonction va lire chaque ligne du fichier et sortir l’objet JSON correspondant.

Enfin, on affiche notre objet personne dans la console de Node JS. On voit que la fonction JSON.parse() as remplacée le JSON en objet javascript directement manipulable.

Utiliser fs.readFile

On peux aussi lire un fichier JSON via la fonction “fs.readFile”. Contrairement à “fs.readFileSync”, cette dernière va lire notre fichier de manière asynchrone. Pour plus d’informations à ce sujet, je vous invite à lire mon article sur l’asynchronisme avec node JS.

La fonction “readFile” prends un nouvel argument, c’est ce qu’on appelle une callback. C’est en fait une fonction qui seras exécutée lorsque la lecture du fichier seras terminé. Cette fonction reçois comme argument le contenu du fichier directement.

Voyons maintenant comment utiliser la fonction “readFile”

const fs = require('fs')
fs.readFile('personne.json', function(erreur, fichier) {
   let personne = JSON.parse(fichier)
   console.log(personne)
})

Ici, on donne comme argument à notre fonction une nouvelle fonction. C’est notre callback. Elle seras exécutée lorsque le fichier auras finit d’être lu, et elle recevras comme paramètres , les erreurs potentielles et les données. Bien sur vous pouvez nommer les variables comme vous voulez, il faut juste respecter l’ordre.

Dans notre fonction, on assigne l’objet JSON retourné via la fonction JSON.parse à la variable personne. Ensuite, on affiche simplement cet objet.

Utiliser require

Je vous ai gardés le meilleur pour la fin, il y a moyen d’importer du JSON en une seule ligne de code, génial non ? Pour se faire, on va utiliser la fonction “require()” qui permets d’importer un fichier ou un module.

Dans notre cas, on va simplement stocker dans une variable l’importation du fichier json. Voici un exemple :

let personne = require('./personne.json')
console.log(personne)

Ici, on récupère directement le contenu de notre fichier sous format d’objet javascript. Ensuite, on affiche simplement cet objet via “console.log()”

Ecrire du JSON dans un fichier

Tout comme les fonctions readFile et readFileSync, il existe deux fonctions permettant d’écrire dans un fichier. writeFile et writeFileSync. Comme vous l’aurez compris, la première fonction écris dans le fichier de manière asynchrone et la seconde fonction écris dans le fichier de manière synchrone.

Voyons maintenant plus en détails comment écrire dans un fichier avec Node JS

Utiliser fs.writeFileSync

La fonction writeFileSync prends deux paramètres, le nom du fichier et les données à écrire dedans. Vous allez voir qu’il est très simple d’écrire du JSON dans un fichier. Dans cet exemple, nous allons insérer un objet javascript sous format json dans un nouveau fichier.

const fs = require('fs')

let personne = {
   "prenom" = "Marie",
   "age" = 45,
   "passion" : "loisirs créatifs, histoire",
   "taille" : 172
}

let donnees = JSON.stringify(personne)
fs.writeFileSync('personnage2.json', donnees)

Ici , on importe le module fs. Ensuite, on crée un nouvel objet javascript contenant certaines données.

On normalise ces données via la fonction JSON.stringify() et on appelle la fonction fs.writeFileSync() avec le nom du fichier à créer et la chaîne de caractère à écrire.

Ce qui est intéressant ici, c’est que si le fichier n’existe pas , node JS va le créer. Si il existe, il va simplement le modifier.

Attention, ce script ne va pas rajouter de nouvelles lignes dans le fichier, il va tout simplement supprimer l’ancien contenu et écrire le nouveau. Si vous voulez combiner l’ancien avec un nouveau, vous devez au choix utiliser d’abord “readFileSync” pour obtenir le contenu, puis écrire en ajoutant d’abord l’ancien contenu. Ou vous pouvez utiliser la fonction appendFile()

fs.writeFile

Voyons maintenant la version asynchrone de l’écriture de fichiers. fs.writeFile va tout comme fs.readFile prendre une callback. Voyons maintenant comment utiliser cette fonction :

const fs = require('fs')

let personne = {
   "prenom" = "Marie",
   "age" = 45,
   "passion" : "loisirs créatifs, histoire",
   "taille" : 172
}
let donnees = JSON.stringify(personne)

fs.writeFile('personne2.json', donnees, function(erreur) {
    if (erreur) {
        console.log(erreur)}
})

Ici , les premières lignes de code sont les mêmes. La seule différence c’est que l’on donne une callback à la fonction. Ici on console.log() tout simplement les erreurs si il y en as.

En conclusion

Il est facile de lire et d’écrire du JSON avec Node JS. Il faut retenir qu’il existe systématiquement deux fonctions. Une synchrone et une asynchrone. Je vous invite à lire mon article sur l’asynchronisme pour plus de détails.

Pensez bien à normaliser les données avec les fonctions JSON.parse() et JSON.stringify(). Sans elles, les données ne sont pas converties.

Si cet article vous as plu, vous pouvez vous abonner à ma newsletter pour recevoir le guide GRATUIT Ultime pour bien débuter la programmation

Vous abonner à notre newsletter

* champ requis

Au plaisir de vous revoir sur mon blog !

Laisser un commentaire

Fermer le menu
×
×

Panier