Guías Desarrollo

Cómo funciona JSON

Los seis tipos de valor JSON, por qué falla el análisis, trampas con enteros grandes y orden de claves, JSONPath y conversión a TypeScript, TSV y más.

Última revisión:

AdSense Placeholder
Slot: header_reference_page
En esta página

JSON (JavaScript Object Notation) es el formato de texto plano que usan la mayoría de las API web, archivos de configuración y exportaciones de datos. Es lo bastante pequeño para aprenderlo en una tarde, pero su rigidez confunde constantemente. Esta guía cubre las reglas, las trampas y las herramientas que lo rodean; cada afirmación se ha ejecutado en Node y Python.

Los seis tipos de valor

Tipo Ejemplo Notas
Objeto {"a": 1} Pares clave-valor sin orden; las claves son siempre cadenas entre comillas dobles
Matriz [1, 2, 3] Lista ordenada de cualquier valor
Cadena "hello" Solo comillas dobles; se escapa con barra invertida, \u00e9 para Unicode
Número -12.5e3 Sin ceros a la izquierda, sin hex, sin NaN ni Infinity
Booleano true, false Solo en minúsculas
null null Un "sin valor" explícito

No existe el tipo fecha: envíe las fechas como cadenas ISO 8601 como 2026-10-03T14:30:05Z. Compárelo con otros formatos en JSON, YAML y XML.

Por qué falla un análisis

JSON es más estricto que la sintaxis de objetos de JavaScript. Todo esto falla al analizarse en Node y en Python:

  • una coma final: {"a":1,}
  • comillas simples: {'a':1}
  • un cero a la izquierda: {"a":01}
  • un comentario: // nota antes de los datos

NaN tampoco es válido según el estándar y Node lo rechaza, pero el módulo json de Python acepta NaN por defecto salvo que se pase allow_nan=False o un gancho parse_constant, de modo que datos que funcionan en un lenguaje pueden fallar en otro. Pegue el texto sospechoso en el Visor JSON o el Editor JSON para ver exactamente dónde se rompe y corríjalo en el Formateador y Embellecedor JSON.

Trampas que parecen JSON válido

  • Enteros grandes. JavaScript guarda los números como flotantes de 64 bits, así que {"id": 9007199254740993} se analiza como 9007199254740992 en Node (el límite de enteros exactos es 9007199254740991). Python conserva el valor completo. Envíe los identificadores grandes como cadenas.
  • Claves duplicadas. El estándar las deja sin definir; Node y Python conservan la última, así que {"a":1,"a":2} queda como a = 2.
  • Orden de claves. Los objetos JSON no tienen orden. Node pone primero las claves de tipo entero ({"b":1,"2":1,"a":1,"1":1} da el orden 1, 2, b, a), mientras que Python conserva el de inserción. No dependa nunca de él.

Legible o minificado

Los espacios son opcionales. El mismo objeto pequeño ocupa 53 caracteres con formato y 31 minificado, un 42 % menos; use el Minificador y Compresor JSON para transferir y el formateador para leer. Gzip reduce ambos mucho más.

Consultar con JSONPath

JSONPath direcciona valores dentro de un documento, como XPath hace con XML. Dada una store con tres libros de precios 8,95, 12,99 y 22,99:

Consulta Resultado
$.store.book[*].title A, B, C
$.store.book[0].title A
$.store.book[?(@.price < 10)].title A
$..price 8.95, 12.99, 22.99

$ es la raíz, . entra en una clave, [*] toma todos los elementos, [?()] filtra y .. busca a cualquier profundidad. Pruebe las suyas en el Probador de JSONPath. JSON Schema es el compañero para validar la estructura: por ejemplo {"type": "object", "required": ["id", "name"], "properties": {"id": {"type": "integer"}, "name": {"type": "string"}}} exige un id entero y un name de texto.

Convertir JSON

  • A TypeScript: {"id": 1, "name": "Ada", "tags": ["a", "b"], "address": {"city": "X", "zip": null}} se convierte en
export interface User {
  id: number;
  name: string;
  tags: string[];
  address: Address;
}

export interface Address {
  city: string;
  zip: null;
}

con el JSON a TypeScript. - A tabla u hoja de cálculo: una matriz de objetos se corresponde de forma natural con filas, con las claves como encabezado. [{"id":1,"name":"Ada"},{"id":2,"name":"Alan"}] como TSV es una línea de encabezado id, tabulador, name seguida de una línea por objeto. Use Conversor de JSON a TSV, Conversor de TSV a JSON, Conversor de JSON a Tabla HTML o Conversor de JSON a Texto; para otros formatos vea Conversor de JSON a XML, Conversor de CSV a TSV, Conversor de TSV a CSV y Conversor de Excel a CSV. - Comparar dos documentos: el Comparador de Diferencias JSON lista lo añadido, eliminado y cambiado. - Datos de prueba: el Generador de Datos JSON Falsos crea filas de muestra realistas a partir de una semilla.

Errores frecuentes

  • Tratar JSON como JavaScript. No se permiten comillas simples, comentarios ni comas finales.
  • Usar números para identificadores. Los ID largos pierden precisión en JavaScript; use cadenas.
  • Depender del orden de las claves. Use una matriz cuando importe el orden.
  • Construir JSON a mano concatenando cadenas. Use un serializador, que escapa bien las comillas y el Unicode.

Pruebe estas herramientas

Véase también

  • Glosario JSON
    JSON (JavaScript Object Notation) es un formato de texto ligero para datos estructurados, formado por objetos, matrices, cadenas, números.
  • Glosario YAML
    YAML es un formato de datos legible para personas que usa sangrado en lugar de llaves, muy usado en archivos de configuración.
  • Glosario CSV
    CSV (valores separados por comas) es un formato de texto plano para tablas, con una fila por línea y los valores separados por comas.
  • Guía Cómo funcionan las metaetiquetas SEO
    Título, descripción, canonical, hreflang, robots.txt.
  • Glosario JSONPath
    JSONPath es un lenguaje de consulta para extraer valores de un documento JSON, como XPath hace con XML.

Preguntas frecuentes

Las causas habituales son una coma final, comillas simples, un comentario, una clave sin comillas o un cero a la izquierda en un número. Un formateador o visor señala la posición exacta.

AdSense Placeholder
Slot: footer_leaderboard