Definición:
JSON, siglas de JavaScript Object Notation, es un formato de texto utilizado para representar e intercambiar datos estructurados. Organiza la información mediante objetos, arrays y valores simples, con una sintaxis compacta que puede ser leída y generada por numerosos lenguajes y aplicaciones de software.
Aunque su nombre procede de JavaScript, JSON no es un lenguaje de programación. No contiene instrucciones ni ejecuta operaciones: describe datos. También debe distinguirse de una base de datos, que puede almacenar documentos JSON, pero incorpora funciones adicionales para consultar, actualizar y administrar información.
La notación procede de la sintaxis de ECMAScript, pero sus reglas están descritas de forma independiente en RFC 8259 y ECMA-404. Esta normalización técnica permite implementar JSON sin depender de JavaScript.
Índice de contenidos
Sintaxis de JSON
Un documento JSON se construye con una sintaxis definida. Los objetos se escriben entre llaves y contienen pares formados por un nombre y un valor. Los arrays se escriben entre corchetes y mantienen una secuencia ordenada de valores. En ambos casos, la coma separa elementos y los dos puntos separan cada nombre de su valor.
Las reglas principales son:
- Nombres entre comillas: cada miembro de un objeto utiliza un nombre de tipo cadena entre comillas dobles.
- Valores admitidos: pueden ser cadenas, números, objetos, arrays, los literales
true,falseonull. - Comillas dobles: las cadenas deben delimitarse con comillas dobles, no con comillas simples.
- Sin coma final: el último miembro de un objeto o elemento de un array no lleva una coma adicional.
- Espacios opcionales: los espacios, tabulaciones y saltos de línea pueden mejorar la lectura sin cambiar el significado fuera de las cadenas.
- Sin comentarios: la sintaxis estándar no incluye comentarios, funciones ni valores como
undefined.
Estas restricciones permiten que un mismo documento sea interpretado de forma consistente por sistemas diferentes. En intercambios abiertos entre aplicaciones, el texto JSON se codifica normalmente en UTF-8.
Tipos de datos
JSON admite un conjunto limitado de tipos de valores. Una cadena representa texto; un número representa una cantidad sin diferenciar formalmente entre enteros y decimales; los booleanos expresan verdadero o falso; y null indica un valor nulo. Los objetos agrupan miembros con nombre y los arrays reúnen valores en orden.
El formato no incorpora tipos específicos para fechas, imágenes o archivos binarios. Una fecha suele transmitirse como cadena siguiendo una convención acordada, y los datos binarios requieren otra representación o un canal separado. El receptor necesita conocer ese contrato de datos para interpretar el contenido más allá de la sintaxis.
También conviene evitar nombres duplicados dentro del mismo objeto. Algunos analizadores conservan el último valor, otros el primero y otros informan de un error. Un documento puede ser sintácticamente válido y, aun así, producir resultados distintos si su estructura depende de esa ambigüedad.
Usos de JSON
JSON se emplea con frecuencia para transportar información entre un cliente y un servidor. Muchas API lo usan en solicitudes y respuestas enviadas mediante HTTP, porque resulta relativamente compacto y dispone de analizadores en la mayoría de los entornos de desarrollo.
Sus usos habituales incluyen:
- Intercambio web: respuestas de servicios y aplicaciones conectadas mediante una API.
- Archivos de configuración: parámetros que una aplicación carga al iniciarse o durante su ejecución.
- Mensajes entre sistemas: eventos, tareas o estados enviados entre componentes de una arquitectura.
- Almacenamiento documental: registros guardados como documentos cuando el sistema elegido admite estructuras JSON.
No siempre es la opción adecuada. Frente a XML, JSON carece de elementos propios como atributos, namespaces o comentarios. Para grandes volúmenes tabulares puede resultar más repetitivo que un formato orientado a filas. La elección depende de la estructura, las reglas de validación y los sistemas que consumirán los datos.
JSON y JavaScript
La sintaxis de JSON se inspira en la notación de objetos de JavaScript, pero ambos conceptos no son equivalentes. JSON es independiente del lenguaje y puede procesarse desde Python, PHP, Java, R y muchos otros entornos. Además, su gramática es más limitada que la de un objeto escrito directamente en código JavaScript.
En JavaScript, JSON.parse() convierte un texto JSON válido en un valor del lenguaje y JSON.stringify() realiza la operación inversa sobre datos compatibles. Analizar el texto con un parser específico es más seguro y predecible que tratarlo como código ejecutable.
Un ejemplo válido es el siguiente:
{
"libros": [
{
"titulo": "El señor de los anillos",
"autor": "J. R. R. Tolkien",
"publicacion": 1954,
"disponible": true
},
{
"titulo": "1984",
"autor": "George Orwell",
"publicacion": 1949,
"disponible": false
}
]
}
El valor raíz es un objeto con la propiedad libros. Su valor es un array que contiene dos objetos. Cada libro combina cadenas, un número y un booleano, lo que muestra cómo JSON puede representar una estructura anidada sin definir comportamiento.
Validación de JSON
Validar JSON implica comprobar primero que el texto respeta la gramática. Un parser detectará problemas como comillas incorrectas, caracteres sin escapar, comas finales o llaves sin cerrar. Esta validación sintáctica no confirma que los nombres, tipos y campos obligatorios sean los esperados por una aplicación.
Cuando se necesita validar la estructura, puede utilizarse un esquema o aplicar reglas en el sistema receptor. Una API REST, por ejemplo, puede exigir que una propiedad concreta sea una cadena, rechazar campos desconocidos o limitar determinados valores.
Antes de procesar datos externos conviene limitar su tamaño, comprobar los tipos y gestionar los errores del parser. JSON facilita la interoperabilidad, pero no garantiza por sí mismo la calidad del dato, su autenticidad ni su seguridad.
