Analyser JSON avec Node.js

Comment analyser JSON à partir d'une chaîne et comment lire un fichier JSON dans Node.js

Si tu asJSONdata dans le cadre d'une chaîne, la meilleure façon de l'analyser est d'utiliser leJSON.parsequi fait partie du standard JavaScript depuis ECMAScript 5, et est fournie parV8, le moteur JavaScript qui alimenteNode.js.

Exemple:

const data = '{ "name": "Flavio", "age": 35 }'
try {
  const user = JSON.parse(data)
} catch(err) {
  console.error(err)
}

Notez queJSON.parseest synchrone, donc plus le fichier JSON est volumineux, plus l'exécution de votre programme sera bloquée jusqu'à ce que l'analyse JSON soit terminée.

Vous pouvez traiter le JSON de manière asynchrone en l'enveloppant dans unpromesseet un appel setTimeout, qui s'assure que l'analyse a lieu lors de la prochaine itération de la boucle d'événements:

const parseJsonAsync = (jsonString) => {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(JSON.parse(jsonString))
    })
  })
}

const data = ‘{ “name”: “Flavio”, “age”: 35 }’ parseJsonAsync(data).then(jsonData => console.log(jsonData))

Si votre JSON est à la place dans un fichier, vous devez d'abord le lire.

Une manière très simple de le faire est d'utiliserrequire():

const data = require('./file.json')

Depuis que vous avez utilisé le.jsonextension,require()est assez intelligent pour comprendre cela et analyser le JSON dans ledataobjet.

Une mise en garde est que la lecture des fichiers est synchrone. De plus, le résultat de l'appel require () est mis en cache, donc si vous l'appelez à nouveau parce que vous avez mis à jour le fichier, vous n'obtiendrez pas le nouveau contenu jusqu'à ce que le programme se termine.

Cette fonctionnalité a été fournie pour utiliser un fichier JSON pour la configuration de l'application, et c'est un cas d'utilisation parfaitement valide.

Vous pouvez également lire le fichier manuellement, en utilisantfs.readFileSync:

const fs = require('fs')
const fileContents = fs.readFileSync('./file.json', 'utf8')

try { const data = JSON.parse(fileContents) } catch(err) { console.error(err) }

Cela lit le fichier de manière synchrone.

Vous pouvez également lire le fichier de manière asynchrone en utilisantfs.readFile, et c'est la meilleure option. Dans ce cas, le contenu du fichier est fourni en tant que rappel, et à l'intérieur du rappel, vous pouvez traiter le JSON:

const fs = require('fs')

fs.readFile(’/path/to/file.json’, ‘utf8’, (err, fileContents) => { if (err) { console.error(err) return } try { const data = JSON.parse(fileContents) } catch(err) { console.error(err) } })

Téléchargez mon gratuitManuel de Node.js


Plus de didacticiels sur les nœuds: