JavaScript es el lenguaje nativo de JSON, ya que el formato fue creado inspirado en la notación de objetos de este lenguaje. Por eso, trabajar con JSON en JavaScript es muy sencillo y directo.
JavaScript provee dos funciones globales para trabajar con JSON:
JSON.parse()
— Convierte un string en formato JSON a un objeto de JavaScript.JSON.stringify()
— Convierte un objeto de JavaScript a un string en formato JSON.Cuando recibimos datos en formato JSON (por ejemplo, desde una API o archivo externo), vienen como string. Para poder manipularlos en JavaScript, hay que convertirlos a objeto.
Ejemplo:
const jsonString = '{"nombre": "Ana", "edad": 28, "activo": true}';
// Convertimos el string JSON a objeto de JavaScript
const objeto = JSON.parse(jsonString);
console.log(objeto.nombre); // Ana
console.log(objeto.edad); // 28
console.log(objeto.activo); // true
🔎 Observación: Después de JSON.parse()
, podemos acceder a los datos como propiedades normales de un objeto.
Cuando queremos enviar datos a un servidor o guardarlos, necesitamos pasarlos a formato JSON.
Ejemplo:
const usuario = {
nombre: "Luis",
edad: 35,
activo: false
};
// Convertimos el objeto a string JSON
const jsonString = JSON.stringify(usuario);
console.log(jsonString);
// {"nombre":"Luis","edad":35,"activo":false}
🔎 Observación: El resultado es un string válido en formato JSON. Este string es lo que viaja en las peticiones HTTP (por ejemplo, en fetch).
En aplicaciones web, lo más común es enviar y recibir JSON de un servidor.
Ejemplo de enviar datos:
const nuevoProducto = {
codigo: 101,
descripcion: "Teclado mecánico",
precio: 1200.50
};
fetch("https://miapi.com/productos", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(nuevoProducto) // enviamos JSON al servidor
})
.then(respuesta => respuesta.json()) // interpretamos la respuesta como JSON
.then(data => console.log("Servidor respondió:", data))
.catch(error => console.error("Error:", error));
Ejemplo de recibir datos:
fetch("https://miapi.com/productos")
.then(respuesta => respuesta.json()) // parseamos la respuesta JSON
.then(data => {
console.log("Productos disponibles:");
console.log(data);
})
.catch(error => console.error("Error:", error));
Podemos usar JSON para guardar información del usuario en el navegador.
Ejemplo:
// Guardar un objeto en localStorage
const usuario = { nombre: "María", edad: 29 };
localStorage.setItem("usuario", JSON.stringify(usuario));
// Recuperar y parsear
const datosGuardados = localStorage.getItem("usuario");
const usuarioRecuperado = JSON.parse(datosGuardados);
console.log(usuarioRecuperado.nombre); // María
Referencia: localStorage.
Si el string JSON tiene un error de sintaxis, JSON.parse()
lanza una excepción.
Ejemplo:
const jsonInvalido = "{nombre: 'Juan'}"; // incorrecto (faltan comillas dobles)
try {
const obj = JSON.parse(jsonInvalido);
} catch (error) {
console.error("Error al parsear JSON:", error.message);
}
JSON.stringify()
admite parámetros extra para formatear con sangría y mejorar la legibilidad.
Ejemplo:
const datos = { nombre: "Carlos", edad: 40 };
const jsonFormateado = JSON.stringify(datos, null, 2);
console.log(jsonFormateado);
// Salida:
// {
// "nombre": "Carlos",
// "edad": 40
// }
JSON.parse()
— Convierte string JSON a objeto JavaScript.JSON.stringify()
— Convierte objeto JavaScript a string JSON.fetch
(cliente-servidor).localStorage
).