
Lo que necesitas saber sobre JSON:
- JSON significa Notación de Objetos de JavaScript – un formato de texto plano para almacenar e intercambiar datos estructurados
- Tiene seis tipos de datos: cadenas, números, booleanos, nulo, arreglos y objetos.
- Las reglas de sintaxis son estrictas: las claves deben ser cadenas con comillas dobles, las comas finales rompen el formato y no se permite usar comentarios
- Los datos se estructuran usando objetos (pares clave/valor entre llaves) y arrays (listas ordenadas entre corchetes); ambos pueden anidarse
- En JavaScript,
JSON.parse()convierte una cadena JSON en un objeto;JSON.stringify()hace lo contrario. - JSON es el formato predeterminado para APIs REST, en gran parte porque cada lenguaje y navegador lo maneja de manera nativa.
- JSON Schema te permite definir y validar la estructura esperada de un documento antes de que tu aplicación lo procese.
- JSONP es una solución heredada para peticiones entre orígenes (cross-origin); en la mayoría de los casos ha sido reemplazada por CORS en desarrollos recientes
Qué es JSON y por qué es importante
JSON (JavaScript Object Notation) es un formato de datos ligero para almacenar e intercambiar datos estructurados. Es un formato de texto plano que todos los lenguajes principales pueden leer y escribir de forma nativa, lo cual es la principal razón por la que se usa casi en todas partes. Las ventajas de JSON son claras: no requiere bibliotecas especiales, no necesita capas de conversión y tiene una estructura que se adapta directamente a los objetos con los que los desarrolladores ya trabajan. Douglas Crockford lo definió a principios de los años 2000, y ahora está estandarizado en RFC 8259 y ECMA-404.
JSON vs XML: diferencias clave
Una comparación entre JSON y XML se reduce a la verbosidad. XML envuelve cada valor en etiquetas de apertura y cierre; JSON usa pares clave/valor con puntuación mínima, y su formato se adapta directamente a las estructuras de datos con las que ya trabajas en el código.
Aquí están los mismos datos en ambos formatos:
XML:
<user>
<name>Alice</name>
<age>30</age>
</user>JSON:
{
"name": "Alice",
"age": 30
}XML todavía tiene sentido para el marcado de documentos y sistemas empresariales con requisitos de esquema estrictos. Para APIs y archivos de configuración, JSON es lo que te encontrarás normalmente.
JSON vs CSV y YAML
En una comparación entre JSON y CSV, CSV maneja datos tabulares planos con claridad, pero se descompone en el momento en que tus datos tienen alguna jerarquía. Una comparación entre JSON y YAML es más cercana – YAML soporta las mismas estructuras que JSON y permite comentarios, lo que es realmente útil para archivos de configuración, pero un espacio mal colocado rompe todo el archivo. JSON es menos flexible que YAML pero mucho más indulgente y universalmente soportado.
| Característica | JSON | CSV | YAML |
|---|---|---|---|
| Legible por humanos | Sí | Sí | Sí |
| Soporta tipos de datos | Sí | No | Sí |
| Datos anidados | Sí | No | Sí |
| Comentarios | No | No | Sí |
| Análisis nativo en el navegador | Sí | No | No |
Ventajas de usar JSON
¿Qué está ofreciendo JSON realmente mejor que las alternativas? Las ventajas de JSON son mayormente prácticas. El formato JSON es universalmente soportado: los navegadores lo analizan de forma nativa, cada lenguaje incluye un analizador incorporado, y ambos extremos de una llamada API pueden leerlo sin ningún paso de traducción entre ellos.
La única limitación real: no hay sintaxis para comentarios. Para archivos de configuración en control de versiones, eso es molesto. Para las cargas de las API, nadie los extraña.
Entendiendo la sintaxis JSON
La sintaxis JSON tiene dos estructuras: objetos (pares clave/valor entre llaves) y arreglos (listas ordenadas entre corchetes). Todo lo demás es un valor dentro de uno de esos.
Las reglas son estrictas e inflexibles:
- Las claves deben ser cadenas entre comillas dobles
- No se permiten comas finales – el analizador rechaza todo el archivo
- No se permiten comentarios, punto.
- Los pares se separan por comas
- Los valores deben ser uno de los seis tipos de datos soportados
Pares clave/valor JSON explicados
Un objeto JSON es una colección de pares clave/valor. Aquí hay un ejemplo de JSON que muestra datos típicos de configuración del servidor:
{
"hostname": "server01",
"port": 8080,
"active": true
}La sintaxis JSON se mantiene igual sin importar lo que representen los datos. Una configuración de servidor y un perfil de usuario son estructuralmente idénticos, solo diferentes claves y valores.
Resumen de tipos de datos JSON
JSON soporta exactamente seis tipos de datos JSON. Así es como se ve cada uno y dónde las cosas suelen salir mal. Cada ejemplo de JSON a continuación es intencionalmente mínimo; en el uso real, simplemente se anidan dentro de objetos y arrays.
Cadena
Una cadena JSON es cualquier secuencia de caracteres Unicode entre comillas dobles. Es el tipo de dato JSON más utilizado de todos, y el error más común es usar comillas simples, que no son válidas.
{ "city": "Munich" }Número
JSON no distingue entre enteros y flotantes, ambos son solo números por lo que respecta a la especificación de tipos de datos JSON. Este ejemplo JSON cubre ambos:
{ "cores": 8, "price": 6.99 }Booleano
Un booleano JSON es true o false. En minúsculas, sin comillas: esas son las únicas opciones válidas, y se aplican de manera consistente a todos los tipos de datos JSON que representan valores de verdad.
{ "enabled": true, "debug": false }Nulo
Representando ausencia, JSON nulo es su propia entrada distinta entre los tipos de datos JSON, no es un sinónimo de una cadena vacía o cero.
{ "middleName": null }Un campo establecido como null y un campo que no existe en absoluto son técnicamente cosas diferentes. Ten esto en cuenta al escribir analizadores.
Arreglo (Array)
Un array en JSON es una lista ordenada de valores entre corchetes; es uno de los tipos de datos JSON más versátiles, ya que puede contener cadenas, números, objetos u otros arrays.
{ "ports": [80, 443] }Objeto
Anidar un objeto JSON dentro de otro objeto es cómo modelas cualquier cosa con estructura jerárquica real. Es el tipo de dato JSON más expresivo y el patrón subyacente de la mayoría de las respuestas de API en el mundo real.
{
"server": {
"hostname": "server01",
"port": 8080
}
}Cómo almacenar datos JSON
Elegir entre un objeto JSON y un arreglo JSON depende de si tus datos tienen propiedades nombradas o si es una colección ordenada. La mayoría de las respuestas de formato JSON reales utilizan ambos juntos.
Usando objetos JSON
Un objeto JSON funciona mejor para datos con propiedades nombradas, un registro de usuario o un solo recurso de API. La sintaxis JSON es la misma en todas partes, y cada ejemplo JSON sigue el mismo patrón de clave/valor.
{ "id": 1, "name": "Alice", "active": true }Uso de arrays en JSON
Un array en JSON se usa para colecciones ordenadas: cualquier situación en la que manejes múltiples instancias de la misma estructura. Este ejemplo JSON también muestra cómo los objetos se anidan naturalmente dentro de arrays, que es el patrón que verás en la gran mayoría de las respuestas de API.
[
{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" }
]Objetos anidados y arrays en JSON
JSON en el mundo real casi siempre implica anidamiento. Un objeto JSON contiene un array JSON, ese array contiene más objetos, esos objetos contienen más valores. No hay límite de profundidad en la especificación, aunque las API de producción pueden ser sorprendentemente profundas antes de que alguien piense en aplanarlas. Aquí hay un ejemplo limpio de JSON:
{
"cluster": "eu-west",
"nodes": [
{ "id": "node1", "status": "active" },
{ "id": "node2", "status": "standby" }
]
}Trabajando con JSON en código
Las dos funciones que usarás constantemente son JSON.parse y JSON.stringify. La validación del esquema JSON entra en juego una vez que estás manejando datos externos o no confiables. Juntas, cubren la gran mayoría de los escenarios de ejemplo de JSON reales en JavaScript.
Parseando JSON con JSON.parse
La operación JSON.parse toma una cadena JSON y devuelve un objeto JavaScript. Es el punto de entrada estándar para manejar respuestas de API, y un buen tutorial de JSON siempre recomendará envolverlo en manejo de errores.
const data = JSON.parse('{"name":"Alice","age":30}');
console.log(data.name); // "Alice"Si se le pasa JSON inválido, genera un <wpml_ignored_tag wpml_name=»code» wpml_value=»U3ludGF4RXJyb3I=» wpml_attrs=»»/>. Siempre envuelve la entrada no confiable en un try/catch, este es el error que más aparece en los registros de producción.
try {
const data = JSON.parse(input);
} catch (e) {
console.error("Invalid JSON:", e.message);
}Método JSON.stringify()
Cada tutorial de JSON cubre JSON.stringify junto a JSON.parse porque necesitas ambos cuando trabajas con APIs. JSON.stringify() va en la otra dirección: objeto dentro, cadena fuera.
const str = JSON.stringify({ name: "Alice", age: 30 });
// '{"name":"Alice","age":30}'Pasa un tercer argumento para una salida con sangría, que es lo que la mayoría de la gente busca cuando busca hacer JSON más legible. El método JSON.stringify es probablemente la función JSON más utilizada en JavaScript.
JSON.stringify(obj, null, 2);Validación del esquema JSON
El esquema JSON es un vocabulario para describir la estructura esperada de un documento JSON. Define campos requeridos y sus tipos de datos JSON permitidos, luego ejecuta los datos entrantes a través de un validador antes de que tu aplicación los toque.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer", "minimum": 0 }
},
"required": ["name"]
}Capturar datos incorrectos en el punto de entrada es mejor que depurarlos tres funciones después. Para los inputs de API especialmente, la validación del esquema JSON es una de las herramientas menos utilizadas en el stack.
JSON en APIs y Aplicaciones Web
El formato JSON por defecto es el mejor para las APIs REST. Cuando haces una llamada a la API JSON, la respuesta casi siempre regresa como un objeto JSON o array con Content-Type: application/json en el encabezado. Y dejando JSONP de lado, así es como la web ha manejado el intercambio de datos estructurados durante más de una década.
Cómo funciona JSONP
JSONP (JSON con Padding) es una solución temporal previa a CORS para restricciones de origen cruzado. En lugar de devolver datos de API JSON en bruto, el servidor envuelve la respuesta en una llamada a una función:
callback({ "name": "Alice" });El navegador lo carga como una etiqueta de script y lo ejecuta. Ahora verás principalmente JSONP en bases de código más antiguas: saber lo que es ahorra veinte minutos de confusión cuando te encuentras con ello.
Formato API JSON
JSON:API es una especificación formal para estructurar respuestas de API en formato JSON. Estandariza cómo aparecen los recursos y errores en el cuerpo de la respuesta, de modo que cualquier cliente diseñado para ello puede consumir cualquier endpoint de API JSON compatible sin necesidad de lógica de análisis personalizada. Vale la pena saberlo si estás construyendo una API pública o integrándote con una a gran escala.
Hoja de referencia de JSON
Una referencia rápida que cubre la sintaxis JSON, tipos de datos JSON y patrones de ejemplo comunes de JSON:
| Elemento | Sintaxis | Ejemplo |
|---|---|---|
| Objeto | { "key": value } | { "name": "Alice" } |
| Array | [ value, value ] | [ 80, 443 ] |
| Cadena | "text" | "hello" |
| Número | 123 o 1.5 | 8080 |
| Booleano | true / false | true |
| Nulo | null | null |
| Objeto anidado | { "key": { } } | { "server": { "port": 80 } } |
| Array anidado | { "key": [ ] } | { "ports": [80, 443] } |
| Parsear (JS) | JSON.parse(str) | JSON.parse('{"a":1}') |
| Stringify (JS) | JSON.stringify(obj) | JSON.stringify({ a: 1 }) |
FAQ de JSON
¿Para qué es bueno JSON, en términos prácticos? Intercambio de datos. La mayoría de las aplicaciones web dependen de las respuestas de API JSON por defecto, y el formato JSON aparece en archivos de configuración en todas partes, desde Docker hasta VS Code. Se convirtió en el estándar porque ambos extremos de una solicitud pueden leerlo sin bibliotecas adicionales o pasos de conversión.
El esquema JSON es un vocabulario para validar la estructura de documentos. Escribe un esquema JSON que defina los campos requeridos y los tipos de datos JSON permitidos, ejecuta los datos entrantes a través de un validador y captura cargas incorrectas antes de que lleguen a la lógica de tu aplicación.
Un array JSON es una lista ordenada de valores en corchetes: o . A diferencia de los objetos, el orden se conserva, y un array JSON puede contener cualquiera de los tipos de datos JSON, incluyendo otros arrays y objetos.
El patrón de parseo JSON es el mismo en todos los lenguajes – cadena dentro, estructura de datos fuera. En JavaScript: . Python: . PHP: . Cada tutorial de JSON también cubre el manejo de errores, porque la entrada inválida lanza en lugar de devolver nulo.
En una comparación JSON vs XML, la principal diferencia es la verbosidad. XML envuelve cada valor en etiquetas nombradas; JSON usa pares clave/valor y los navegadores lo analizan de forma nativa. El formato JSON es más corto y se mapea más directamente a los objetos con los que estás trabajando en el código. XML todavía tiene ventajas reales en la marcación de documentos y escenarios complejos de espacios de nombres, pero para la mayoría del trabajo con APIs, JSON es el estándar.