Procesamiento de JSON en Node.js: guía completa
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos basado en la sintaxis de objetos de JavaScript. En el entorno Node.js, trabajar con JSON es una tarea cotidiana: desde archivos de configuración hasta solicitudes de API. En este artículo, analizaremos en detalle todos los aspectos del procesamiento de JSON, incluyendo análisis, serialización, validación y trabajo con archivos grandes.
Métodos básicos: JSON.parse() y JSON.stringify()
Los dos métodos principales para trabajar con JSON están integrados directamente en JavaScript. Están disponibles globalmente y no requieren la instalación de bibliotecas adicionales.
JSON.parse() — conversión de cadena a objeto
El método JSON.parse() toma una cadena JSON y devuelve el objeto JavaScript correspondiente. Si la cadena contiene JSON no válido, se lanzará una excepción SyntaxError.
const jsonString = '{"name": "Анна", "age": 28, "isStudent": false}';const user = JSON.parse(jsonString);console.log(user.name); // "Анна"console.log(user.age); // 28Como segundo parámetro opcional, se puede pasar una función reviver que permite modificar los valores durante el análisis:
const json = '{"year": "2024", "price": "1500.50"}';const data = JSON.parse(json, (key, value) => { if (key === 'price') return parseFloat(value); if (key === 'year') return parseInt(value); return value;});console.log(typeof data.price); // "number"JSON.stringify() — conversión de objeto a cadena
El método JSON.stringify() hace lo contrario: convierte un objeto o valor en una cadena JSON. Acepta hasta tres argumentos: el valor, una función de reemplazo o un array de claves, y la cantidad de espacios para el formateo.
const user = { name: "Иван", age: 32, skills: ["JS", "Node", "Python"]};
// Sin formatoconsole.log(JSON.stringify(user));// {"name":"Иван","age":32,"skills":["JS","Node","Python"]}
// Con formato (2 espacios)console.log(JSON.stringify(user, null, 2));/*{ "name": "Иван", "age": 32, "skills": [ "JS", "Node", "Python" ]}*/El segundo argumento puede ser un array de claves para filtrar:
console.log(JSON.stringify(user, ['name', 'age']));// {"name":"Иван","age":32}Trabajo con archivos JSON en Node.js
En Node.js, a menudo es necesario leer y escribir archivos JSON. Para ello se utilizan los módulos fs (file system).
Lectura de un archivo JSON
const fs = require('fs');
// Lectura síncronatry { const data = fs.readFileSync('config.json', 'utf8'); const config = JSON.parse(data); console.log(config.port);} catch (err) { console.error('Error al leer el archivo:', err.message);}
// Lectura asíncronafs.readFile('config.json', 'utf8', (err, data) => { if (err) { console.error('Error:', err); return; } const config = JSON.parse(data); console.log(config.port);});Escritura de un archivo JSON
const fs = require('fs');
const settings = { theme: 'dark', language: 'ru', fontSize: 14};
// Escritura síncronafs.writeFileSync('settings.json', JSON.stringify(settings, null, 2));
// Escritura asíncronafs.writeFile('settings.json', JSON.stringify(settings, null, 2), (err) => { if (err) console.error('Error al escribir:', err); else console.log('Archivo guardado');});Validación de JSON
Antes de usar los datos, siempre vale la pena verificar su validez. La forma más simple es envolver JSON.parse() en un try-catch. Para una validación más compleja de la estructura, se pueden usar bibliotecas.
Verificación con try-catch
function safeJsonParse(str) { try { return { data: JSON.parse(str), error: null }; } catch (e) { return { data: null, error: e.message }; }} También en la biblioteca
Event Bus y el patrón Observer en Java: guía con ejemplos
lo para Go: guía completa con ejemplos prácticos
Cliente Elasticsearch para Java: guía completa para trabajar con Java Client
React para JavaScript (Node.js): guía completa con ejemplos
GraphQL en Node.js: Guía completa sobre la biblioteca graphql-http