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); // objectLa 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); // trueJSON.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 :
Aussi dans la bibliothèque
Biometric Kotlin : guide complet avec exemples pratiques
Géolocalisation et cartes en Kotlin : aperçu des bibliothèques et outils
Client OAuth pour Kotlin : intégration avec les fournisseurs via ktor-client et kotlinx-serialization
Internationalisation (i18n) en Swift : NSLocalizedString et String Catalog
Jest pour TypeScript : Guide complet de test
Recommendations