Traitement JSON en JavaScript (Node.js) : Guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

JSON dans Node.js : Guide complet de traitement des données



JSON (JavaScript Object Notation) est un format léger d'échange de données qui est devenu le standard de facto pour les API web, les fichiers de configuration et le stockage d'informations structurées. Dans l'environnement Node.js, le travail avec JSON est une partie intégrante de pratiquement toute application. Dans cet article, nous examinerons en détail tous les aspects du traitement JSON : de l'analyse de base au traitement avancé par flux.



1. Bases : Analyse et sérialisation



Dans Node.js, deux méthodes globales sont utilisées pour travailler avec JSON : JSON.parse() et JSON.stringify(). Elles sont disponibles sans avoir besoin d'importer des modules supplémentaires.



JSON.parse() — Conversion d'une chaîne en objet

La méthode JSON.parse() prend une chaîne JSON et retourne l'objet JavaScript correspondant. Il est important que la chaîne soit un JSON strictement valide.



const jsonString = '{"name": "Alice", "age": 30, "isAdmin": false}';const user = JSON.parse(jsonString);console.log(user.name); // Aliceconsole.log(typeof user); // object


La méthode prend également en charge un deuxième argument — une fonction "reviver" qui permet de transformer les valeurs pendant l'analyse :



const data = '{"date": "2025-01-15T10:00:00Z"}';const parsed = JSON.parse(data, (key, value) => {    if (key === 'date') return new Date(value);    return value;});console.log(parsed.date instanceof Date); // true


JSON.stringify() — Conversion d'un objet en chaîne

La méthode JSON.stringify() effectue la conversion inverse — transforme un objet JavaScript en chaîne JSON.



const user = {    name: 'Bob',    age: 25,    hobbies: ['coding', 'reading']};const json = JSON.stringify(user);console.log(json); // {"name":"Bob","age":25,"hobbies":["coding","reading"]}


La méthode accepte trois arguments : la valeur, une fonction de remplacement (replacer) et le nombre d'espaces pour le formatage (space) :



const obj = { a: 1, b: 2, c: 3 };// Sortie formatée avec indentationconsole.log(JSON.stringify(obj, null, 2));// {//   "a": 1,//   "b": 2,//   "c": 3// }

// Filtrage des clés avec replacerconst filtered = JSON.stringify(obj, ['a', 'c'], 2);console.log(filtered);// {// "a": 1,// "c": 3// }


2. Lecture et écriture de fichiers JSON



Dans les applications réelles, les données JSON sont souvent stockées dans des fichiers. Pour travailler avec le système de fichiers, on utilise le module intégré fs.



Lecture et écriture synchrones

const fs = require('fs');const path = require('path');

const filePath = path.join(__dirname, 'config.json');

// Lectureconst rawData = fs.readFileSync(filePath, 'utf-8');const config = JSON.parse(rawData);console.log(config.port);

// Écritureconst newConfig = { port: 3000, host: 'localhost' };fs.writeFileSync(filePath, JSON.stringify(newConfig, null, 2));


Lecture et écriture asynchrones (méthode recommandée)

const fs = require('fs').promises;

async function readConfig() { try { const data = await fs.readFile('config.json', 'utf-8'); return JSON.parse(data); } catch (err) { console.error('Erreur de lecture du fichier :', err); throw err; }}

async function writeConfig(config) { await fs.writeFile('config.json', JSON.stringify(config, null, 2));}

// Utilisation(async () => { const config = await readConfig(); config.port = 4000; await writeConfig(config);})();


3. Validation JSON



Il est parfois nécessaire de vérifier si une chaîne est un JSON valide sans lever d'exception. La méthode la plus fiable consiste à encapsuler JSON.parse() dans un bloc try-catch :




                
    
    

Recommendations