¿Qué es JSON?
JSON (JavaScript Object Notation) es un formato de texto ligero diseñado para el intercambio de datos entre sistemas. Aunque se inspiró en la sintaxis de objetos de JavaScript, hoy se usa en prácticamente todos los lenguajes de programación: Python, Java, Go, Rust, PHP, Ruby, C#, y muchos más. Si trabajas con APIs, archivos de configuración, bases de datos NoSQL o cualquier forma de comunicación entre servicios, te encontrarás con JSON a diario.
JSON fue estandarizado por Douglas Crockford a principios de los 2000 y publicado como RFC 7159 (ahora RFC 8259). Su éxito radica en su simplicidad: es fácil de leer para humanos y fácil de parsear para máquinas, lo que lo convierte en el formato ideal para la web moderna.
Estructura básica de JSON
JSON se compone de dos estructuras fundamentales:
Objetos — colecciones desordenadas de pares clave-valor entre llaves:
{
"nombre": "GarTools",
"version": 3,
"activo": true,
"categorias": ["texto", "desarrollo", "imagen"]
}
Arrays — listas ordenadas de valores entre corchetes:
["texto", "desarrollo", "imagen", "web", "conversión"]
Los tipos de valores permitidos en JSON son exactamente seis:
- String: cadenas de texto entre comillas dobles (
"hola") - Number: enteros o decimales (
42,3.14,-7) - Boolean:
trueofalse - null: valor nulo
- Object: otro objeto JSON anidado
- Array: otra lista de valores
JSON no soporta comentarios, funciones, fechas nativas ni valores undefined. Esto es por diseño: mantiene el formato simple, inequívoco y universalmente parseable.
¿Dónde se usa JSON en el mundo real?
APIs REST y GraphQL
La inmensa mayoría de APIs modernas usan JSON como formato de intercambio. Cuando una aplicación frontend solicita datos a un servidor, la respuesta casi siempre viene en JSON. Frameworks como Express.js, Django REST, Spring Boot y FastAPI devuelven JSON por defecto.
Archivos de configuración
Muchas herramientas de desarrollo usan archivos JSON para su configuración:
package.jsonen proyectos Node.jstsconfig.jsonpara TypeScript.eslintrc.jsonpara ESLintcomposer.jsonen PHP- Configuraciones de VS Code, Prettier y cientos de herramientas más
Bases de datos NoSQL
MongoDB, Firebase Firestore, CouchDB y DynamoDB almacenan documentos en formato JSON (o BSON, su variante binaria). Esto permite almacenar datos con estructuras flexibles sin necesidad de definir esquemas rígidos.
Almacenamiento local en el navegador
localStorage y sessionStorage solo almacenan strings. El patrón más común es serializar objetos JavaScript a JSON con JSON.stringify() y deserializarlos con JSON.parse().
Tokens JWT
Los JSON Web Tokens, estándar para autenticación en APIs modernas, codifican header y payload como objetos JSON en Base64url.
Errores comunes al escribir JSON
Los principiantes (y a veces los experimentados) cometen estos errores frecuentemente:
- Usar comillas simples en lugar de dobles. JSON solo acepta comillas dobles para strings y claves.
- Dejar una coma final (trailing comma) después del último elemento de un objeto o array. A diferencia de JavaScript, JSON no lo permite.
- Olvidar las comillas en las claves de un objeto. En JavaScript puedes escribir
{nombre: "test"}, pero en JSON debe ser{"nombre": "test"}. - Incluir comentarios. JSON no soporta
//ni/* */. Si necesitas comentarios, considera JSON5 o JSONC. - Usar valores undefined o NaN. Estos no existen en JSON. Usa
nullen su lugar.
Para detectar estos errores rápidamente, usa nuestro validador JSON online. Te indica la línea y columna exacta del error.
¿Cómo formatear JSON correctamente?
Cuando recibes JSON comprimido (minificado) de una API, es prácticamente ilegible:
{"usuarios":[{"id":1,"nombre":"Ana","roles":["admin","editor"]},{"id":2,"nombre":"Carlos","roles":["viewer"]}]}
Un formateador (o "beautifier") añade indentación y saltos de línea para hacerlo legible:
{
"usuarios": [
{
"id": 1,
"nombre": "Ana",
"roles": ["admin", "editor"]
},
{
"id": 2,
"nombre": "Carlos",
"roles": ["viewer"]
}
]
}
Prueba nuestro formateador JSON — pega tu JSON y obtén una versión legible al instante con indentación configurable (2 o 4 espacios).
JSON vs XML: ¿por qué ganó JSON?
JSON reemplazó progresivamente a XML como formato preferido en la web por varias razones:
| Característica | JSON | XML |
|---|---|---|
| Legibilidad | Alta | Media-baja |
| Verbosidad | Baja | Alta |
| Tipado nativo | Sí | No |
| Parseo | Rápido | Lento |
| Soporte navegador | Nativo | Requiere parser |
XML sigue siendo relevante en contextos como SOAP, documentos ofimáticos (OOXML), feeds RSS/Atom y configuraciones de sistemas empresariales. Pero para desarrollo web moderno, JSON es el estándar indiscutible.
Si necesitas convertir XML existente a JSON, puedes usar nuestro conversor XML a JSON.
Herramientas esenciales para trabajar con JSON
Para trabajar eficientemente con JSON necesitas tres herramientas clave:
- Validador: para verificar que tu JSON es sintácticamente correcto. Nuestro validador JSON te indica errores con línea y columna exacta.
- Formateador: para hacer legible un JSON comprimido o minificar uno formateado. Usa nuestro formateador JSON.
- Conversor: para transformar JSON desde y hacia otros formatos como CSV o XML.
JSON en el desarrollo frontend moderno
En el desarrollo frontend, JSON es omnipresente. Las llamadas a APIs con fetch o axios devuelven respuestas que se parsean automáticamente como objetos JavaScript mediante el metodo .json(). Los estados globales de aplicaciones React, Vue o Angular se serializan frecuentemente como JSON para depuracion con herramientas como Redux DevTools o Vue DevTools.
Los archivos de internacionalizacion (i18n) suelen almacenarse como JSON, con un archivo por idioma que contiene todos los textos de la aplicacion organizados por claves jerarquicas. Este patron permite cambiar de idioma simplemente cargando un archivo JSON diferente sin modificar ningun componente.
Ademas, herramientas como Storybook usan archivos JSON para definir las propiedades (args) de cada componente en sus historias. Los design systems modernos exportan tokens de diseno (colores, tipografias, espaciados) como JSON que luego se transforma automaticamente en variables CSS, Swift, Kotlin o cualquier plataforma destino.
Seguridad al trabajar con JSON
Aunque JSON es un formato de datos pasivo (no ejecuta codigo), existen riesgos de seguridad que debes conocer:
Inyeccion JSON: si construyes JSON manualmente concatenando strings en lugar de usar funciones de serializacion nativas, un atacante podria inyectar estructura maliciosa. Siempre usa JSON.stringify() en JavaScript, json.dumps() en Python o el equivalente de tu lenguaje.
Deserializacion insegura: nunca uses eval() para parsear JSON. Aunque tecnicamente funciona porque JSON es un subconjunto de JavaScript, eval() ejecuta cualquier codigo JavaScript, lo que abre la puerta a ejecucion de codigo arbitrario. Usa siempre JSON.parse(), que solo acepta datos validos de JSON y rechaza cualquier construccion de codigo.
Datos sensibles en JSON expuesto: las respuestas de API en JSON pueden contener accidentalmente datos sensibles (tokens, contraseñas hasheadas, emails internos) si el backend no filtra correctamente los campos antes de serializar. Revisa siempre que tus endpoints no expongan mas informacion de la necesaria.
Limites de tamanio: JSON no tiene limite de tamaño inherente, pero parsear un JSON extremadamente grande puede consumir toda la memoria disponible. En servidores, establece limites en el tamano del body de las peticiones para prevenir ataques de denegacion de servicio.
JSON Schema: validacion estructurada
JSON Schema es una especificacion que permite describir la estructura esperada de un documento JSON. Funciona como un contrato: defines que campos son obligatorios, que tipos deben tener, que valores son validos y que restricciones aplican. Luego, un validador verifica automaticamente que cualquier JSON cumpla con ese esquema.
Por ejemplo, puedes definir que un objeto "usuario" debe tener un campo "email" de tipo string con formato de email valido, un campo "edad" de tipo numero entero entre 18 y 120, y un campo opcional "telefono" que, si existe, debe ser un string con un patron regex especifico.
JSON Schema se usa ampliamente en la validacion de APIs (OpenAPI/Swagger lo usa internamente), en la configuracion de formularios dinamicos, en la generacion automatica de documentacion y en la validacion de archivos de configuracion. Herramientas como Ajv (para JavaScript) o jsonschema (para Python) permiten validar JSON contra un schema en milisegundos.
Alternativas a JSON y cuando considerarlas
Aunque JSON domina el ecosistema web, existen alternativas para casos especificos:
YAML ofrece una sintaxis mas legible para humanos, con indentacion en lugar de llaves y soporte para comentarios. Es popular en archivos de configuracion (Docker Compose, Kubernetes, GitHub Actions, CI/CD) pero mas lento de parsear y propenso a errores de indentacion.
TOML es otro formato de configuracion mas estricto y simple que YAML. Usado por Cargo (Rust), pyproject.toml (Python) y algunas herramientas modernas que prefieren algo mas predecible que YAML.
MessagePack y CBOR son formatos binarios compatibles con JSON pero significativamente mas compactos y rapidos de parsear. Utiles cuando la eficiencia de red o almacenamiento es critica, como en comunicaciones IoT o caches de alto rendimiento.
Protocol Buffers (protobuf) de Google y FlatBuffers son formatos binarios con esquemas definidos en tiempo de compilacion. Ofrecen el maximo rendimiento pero requieren generar codigo para cada lenguaje y no son legibles por humanos.
Para la inmensa mayoria de aplicaciones web, JSON sigue siendo la mejor opcion por su universalidad, simplicidad y soporte nativo en navegadores y servidores.
Conclusión
JSON es el formato estándar para intercambiar datos en la web moderna. Aprender a leerlo, escribirlo, validarlo y depurarlo es una habilidad fundamental para cualquier persona que trabaje con tecnología. Dominar JSON te hace más eficiente en desarrollo, integración de APIs y análisis de datos.
¿Te ha sido útil este artículo?
Suscríbete a la newsletter mensual: un correo cuando publicamos algo igual de útil. Sin spam.
Los comentarios se activarán próximamente. ¿Quieres compartir algo sobre este artículo? Escríbenos en /contacto.