Comment parser un JSON en utilisant Node.JS ?

Pour gérer des fichiers JSON, Node.js peut soit utiliser ses propres méthodes soit appeler les méthodes du langage JavaScript.

Node.js est un environnement permettant d'exécuter le langage JavaScript sur un serveur. Il est capable de gérer les fichiers JSON. Il peut pour cela soit utiliser ses propres méthodes soit appeler les méthodes du langage JavaScript.

La première possibilité est la fonction require. Cette fonction lit et évalue directement le contenu d'un fichier. Elle fonctionne avec les fichiers JSON.

var monJson = require('mon-fichier.json');

Comme toutes les fonctions d'évaluation, il y a des risques dans son utilisation. Il faut être sûr du contenu du fichier car si un code malveillant est écrit à l'intérieur, il sera directement exécuté. De plus, le fichier ne sera lu qu'une seule fois et stocké en mémoire, ce qui peut poser problème pour un fichier important. Son fonctionnement est synchrone, ce qui signifie que le script attendra que tout le contenu du fichier soit parsé avant de continuer. Le fichier doit avoir l'extension .json sinon il ne sera pas interprété comme étant du JSON.

Node.JS est bâti à partir du moteur JavaScript V8. Ce moteur JavaScript utilise la version ECMA5 du langage qui contient la classe JSON. Cette classe permet de gérer les objets JSON. Elle contient la méthode parse() qui permet de parser du JSON contenu dans une chaîne de caractères.

var chaine = '{ nom: Marc Dupont, age: 30 }';
var monJson = JSON.parse(chaine);

Pour l'utiliser avec un fichier, il faut faire appel au module fs de Node.js qui gère les systèmes de fichier. La méthode readfile() lit le contenu d'un fichier.

var fs = require('fs');
var monJson = JSON.parse(fs.readFileSync('mon-fichier.json', 'utf8'));

De plus, la méthode readfile() peut être utilisée de manière asynchrone. Le troisième argument de la fonction permet d'utiliser une fonction qui sera exécutée une fois le fichier entièrement lu. On peut parser le contenu du fichier dans cette fonction.

var fs = require('fs');
fs.readFile('mon-fichier.json', 'utf8', function (erreur, donnees)
{
 if (erreur)
 throw erreur; // Vous pouvez gérer les erreurs avant de parser le JSON
 var monJson = JSON.parse(donnees);
});

JavaScript