Analyser Json en Node.js

Isaac Tony 30 mars 2022
Analyser Json en Node.js

Dans cette section, nous apprendrons à analyser JSON de manière synchrone dans Node js. L’analyse des données JSON peut être appelée le processus d’interprétation des données JSON dans un langage spécifique que vous utilisez peut-être actuellement.

Les données JSON sont souvent stockées dans des paires clé-valeur sous forme de valeurs de chaîne entre guillemets tout en respectant les spécifications JSON. Les données JSON reçues du serveur ou renvoyées par une API sont souvent au format chaîne. Dans ce format brut, les données JSON ne sont pas facilement lisibles et accessibles et doivent donc être converties en une forme plus conviviale.

Nous pouvons utiliser trois méthodes principales pour analyser les fichiers JSON dans Node js. Pour les fichiers locaux, c’est-à-dire ceux qui résident dans le stockage de votre ordinateur local, nous pouvons utiliser la fonction require() utilisée pour charger des modules dans l’environnement Node js. Cependant, cette méthode est synchrone, ce qui signifie que ce programme n’exécutera rien d’autre tant que le fichier en cours n’aura pas été entièrement analysé.

[
    {
      "id": 0,
      "name": "Maribel Andrews"
    },
    {
      "id": 1,
      "name": "Gilliam Mcdonald"
    },
    {
      "id": 2,
      "name": "Lisa Wright"
    }
  ]
const friends  = require("./friends.json");
 
console.log(friends);

Exemple de sortie :

[
  { id: 0, name: 'Maribel Andrews' },
  { id: 1, name: 'Gilliam Mcdonald' },
  { id: 2, name: 'Lisa Wright' }
]

Ce programme n’est pas adapté pour travailler avec des programmes dynamiques mais avec des fichiers statiques. Les programmes susceptibles de modifier les données nous obligeraient à analyser à nouveau les données une fois qu’une modification a été apportée. Ce n’est pas la meilleure façon d’analyser les fichiers JSON.

Alternativement, nous pourrions utiliser le module fs et fs.readFileSync() pour charger le fichier JSON au lieu de le charger en tant que module. Le module fs est un moyen plus efficace d’effectuer des opérations sur les fichiers telles que la lecture de fichiers, le renommage et la suppression. Le fs.readFileSync() est une interface qui nous permet de lire le fichier et son contenu de manière synchrone.

[
    {
      "id": 0,
      "name": "Maribel Andrews"
    },
    {
      "id": 1,
      "name": "Gilliam Mcdonald"
    },
    {
      "id": 2,
      "name": "Lisa Wright"
    }
  ]
const fs = require("fs");
 
const friends = fs.readFileSync("./friends.json");
 
 
console.log(friends);

Exemple de sortie :

<Buffer 5b 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 22 69 64 22 3a 20 30 2c 0d 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 4d 61 72 69 62 65 6c 20 41 ... 144 more bytes>

Bien que nous ayons chargé avec succès le fichier JSON, nous n’avons pas spécifié le format d’encodage. La méthode readFileSync() renvoie le tampon brut lorsque le paramètre d’encodage n’est pas spécifié, c’est-à-dire lorsqu’il est nul. Le format d’encodage des fichiers texte est généralement utf-8.

const fs = require("fs");
 
const friends = fs.readFileSync("./friends.json", {encoding: 'utf-8'});
 
console.log(friends);

Exemple de sortie :

[
    {
      "id": 0,
      "name": "Maribel Andrews"
    },
    {
      "id": 1,
      "name": "Gilliam Mcdonald"
    },
    {
      "id": 2,
      "name": "Lisa Wright"
    }
  ]

Maintenant que nous avons lu avec succès le fichier JSON, nous pouvons analyser la chaîne JSON dans un objet JSON. Nous pouvons le faire en utilisant la fonction JSON.parse(). Il s’agit d’une fonction javascript que nous pouvons utiliser pour convertir la chaîne JSON en objet.

Cette fonction accepte deux paramètres : la chaîne JSON à analyser et un paramètre facultatif appelé le réanimateur. Selon mozilla.org, si le paramètre reviver est une fonction, il spécifie comment la valeur analysée à l’origine est transformée.

const fs = require("fs");
 
const friends = fs.readFileSync("./friends.json", {encoding: 'utf-8'});
 
const parsed_result = JSON.parse(friends);
 
 
console.log(parsed_result);

Production :

[
  { id: 0, name: 'Maribel Andrews' },
  { id: 1, name: 'Gilliam Mcdonald' },
  { id: 2, name: 'Lisa Wright' }
]

Dans cette section, nous verrons comment parser une chaîne JSON de manière asynchrone. Dans les exemples précédents, nous avons examiné comment analyser les données de chaîne JSON de manière synchrone. Cependant, dans Node js, l’écriture de fonctions synchrones est considérée comme mauvaise, surtout si les données sont volumineuses.

Nous pouvons analyser les données de chaîne JSON dans un objet JSON en utilisant la méthode fs.readFile() et rappeler les fonctions.

Cela garantira que le reste du programme sera exécuté pendant que les données sont récupérées en arrière-plan, réduisant ainsi le temps d’attente inutile pour le chargement des données.

const fs = require('fs');
 
fs.readFile('./friends.json',{encoding: 'utf-8'}, (err, data) => {
  if (err) console.error(err);
  const parsed_data  = JSON.parse(data);
 
  console.log(parsed_data);
});
 
console.log("Rest of the program that needs to be executed!");

Exemple de sortie :

Rest of the program that needs to be executed!
[
  { id: 0, name: 'Maribel Andrews' },
  { id: 1, name: 'Gilliam Mcdonald' },
  { id: 2, name: 'Lisa Wright' }
]

Bien que cette méthode puisse sembler être la meilleure option lorsque vous travaillez avec des données volumineuses que les méthodes synchrones décrites précédemment, ce n’est pas le cas. Lorsque nous avons des données provenant d’une source externe, nous devons constamment recharger à nouveau les données lorsque de nouvelles modifications ont été apportées ; c’est le même scénario lorsque vous travaillez avec les méthodes synchrones. L’APIS de flux natif Node js est l’alternative recommandée lorsque vous travaillez avec d’énormes données externes.

Auteur: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn