JSON
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos muy utilizado en APIs, configuración y almacenamiento. Está basado en la sintaxis de objetos y arrays de JavaScript, pero en realidad JSON es siempre un string que representa datos estructurados. Su compatibilidad con muchos lenguajes lo hace ideal para intercambiar información entre sistemas diferentes. Un ejemplo de objeto JSON sería:
{
"nombre": "Ana",
"edad": 25,
"activo": true,
"hobbies": ["leer", "fútbol", "programar"]
}
Al trabajar con JSON, es recomendable validar los datos antes de parsearlos y evitar incluir métodos en los objetos que se vayan a serializar. También es importante respetar el uso de comillas dobles en las claves para asegurar la compatibilidad entre sistemas.
Diferencia entre JSON y objetos JavaScript
Aunque JSON se parece mucho a los objetos de JavaScript, existen diferencias importantes. Mientras que un objeto en JavaScript existe en memoria y puede contener métodos y propiedades sin comillas, en JSON todas las claves deben estar entre comillas dobles y no se permiten funciones. JSON se utiliza principalmente para el intercambio de datos, mientras que los objetos JavaScript se usan para la lógica y manipulación interna dentro de un programa.
// JSON como string
const jsonString = '{"nombre":"Ana","edad":25}';
// Objeto JavaScript
const persona = { nombre: "Ana", edad: 25 };
Convertir entre JSON y objetos JavaScript
Para trabajar con JSON en Node.js es habitual convertir entre strings JSON y objetos JavaScript. Por ejemplo, si tenemos un string JSON, podemos transformarlo en un objeto JavaScript mediante JSON.parse():
const jsonString = '{"nombre":"Ana","edad":25}';
const persona = JSON.parse(jsonString);
console.log(persona.nombre); // Ana
De forma inversa, un objeto JavaScript puede convertirse a JSON usando JSON.stringify(). Esto es útil para enviar datos a un servidor o guardarlos en un archivo:
const persona = { nombre: "Ana", edad: 25 };
const jsonString = JSON.stringify(persona);
console.log(jsonString); // '{"nombre":"Ana","edad":25}'
JSON.stringify permite además opciones avanzadas, como dar formato con sangría usando un segundo y tercer parámetro (JSON.stringify(obj, null, 2)) o filtrar propiedades concretas (JSON.stringify(obj, ["nombre", "edad"])).