JSON frente a literal de objeto JavaScript

JSON parece un literal de objeto JavaScript, pero es un formato de datos más pequeño, con sintaxis más estricta y sin valores ejecutables.

La versión corta

Un literal de objeto JavaScript es código fuente; JSON es un formato de intercambio de datos. El solapamiento es lo bastante grande como para confundir, pero las reglas son distintas: las claves y cadenas JSON requieren comillas dobles, JSON no admite comentarios y JSON no puede representar funciones, undefined, NaN, Infinity, objetos Date ni expresiones regulares.

Valores JSON válidos

Un documento JSON puede contener un objeto, un array, una cadena, un número, un booleano o null. Las cadenas deben usar comillas dobles. Las claves de los objetos también deben ser cadenas entre comillas dobles. Los números no pueden usar formas exclusivas de JavaScript como notación hexadecimal, NaN, Infinity o separadores numéricos.

  • Cadena JSON válida: "hello"
  • Booleano JSON válido: true
  • Null JSON válido: null
  • Clave de objeto JSON válida: "name"

JavaScript válido pero JSON inválido

{ name: 'Ada', active: true, createdAt: new Date(), onSave() { return true }, tags: ['dev',], }

Versión JSON válida

{ "name": "Ada", "active": true, "createdAt": "2026-05-13T00:00:00.000Z", "tags": ["dev"] }

Por qué las APIs rechazan datos con pinta de JavaScript

Los servidores de API suelen parsear los bodies con un parser JSON, no con un motor JavaScript. Eso es una garantía de seguridad e interoperabilidad: cualquier lenguaje puede parsear los mismos datos sin ejecutar código. Si un body incluye comentarios, métodos, undefined o new Date(), el servidor no puede tratarlo como datos puros con seguridad.

Cómo convertir con seguridad

Sustituye los valores ejecutables o específicos del lenguaje por datos planos. Las fechas deben ser cadenas, los valores ausentes deben ser null o claves omitidas, los comentarios deben ir a la documentación y las funciones deben representarse con campos explícitos de datos como un nombre de estrategia o un tipo.