Un formato de datos, no un lenguaje
JSON (JavaScript Object Notation) es el formato de intercambio de datos más usado en APIs web, archivos de configuración y almacenamiento de documentos, con un diseño deliberadamente minimalista: apenas seis tipos de valor —objeto, array, string, número, booleano y null— combinables entre sí sin límite de anidamiento.
A diferencia de JavaScript, de donde toma nombre y sintaxis, JSON es puramente un formato de datos: no admite funciones, comentarios, referencias circulares ni ningún tipo de lógica. Esa restricción es intencional — la especificación formal, RFC 8259, existe justamente para que cualquier parser, en cualquier lenguaje, interprete el mismo documento exactamente de la misma manera.
De dónde salen los errores más comunes
La mayoría de los errores de sintaxis en JSON vienen de costumbres válidas en JavaScript pero prohibidas explícitamente por la especificación:
- Las claves van siempre entre comillas dobles.
{name: "Ana"}no es JSON válido; tiene que ser{"name": "Ana"}. Las comillas simples tampoco se aceptan en ningún lado, ni para claves ni para strings. - No hay comas finales.
[1, 2, 3,]es un error: la coma después del último elemento de un array, o de la última propiedad de un objeto, no está permitida. - No existen los comentarios, ni
//ni/* */. Si un archivo de configuración necesita comentarios, probablemente JSON no sea el formato adecuado para ese caso — YAML o JSON5 sí los permiten, a costa de renunciar a la portabilidad universal de JSON. - Los números no llevan ceros a la izquierda.
01es inválido; hay que escribir1o1.0. Tampoco se acepta un+explícito, solo-para los negativos. - Los strings solo admiten un conjunto fijo de secuencias de escape:
\",\\,\/,\b,\f,\n,\r,\t, y\uXXXXpara cualquier carácter Unicode por su código hexadecimal de 4 dígitos.
Por qué JSON.parse() a veces da un error poco útil
Cuando JSON.parse() falla, el mensaje que produce cambia según el motor de JavaScript que lo esté ejecutando: V8 (Chrome, Node.js), JavaScriptCore (Safari) y SpiderMonkey (Firefox) reportan la posición del error de forma distinta y con distinto nivel de detalle, sin que nada de eso esté estandarizado por la especificación de JavaScript. Esta herramienta no depende de esos mensajes — analiza el JSON con su propio validador, carácter por carácter, para señalar siempre la línea y columna exactas donde deja de ser válido, sin importar el navegador.
Formatear no es lo mismo que minificar
Formatear (o pretty-print) agrega indentación y saltos de línea consistentes para que la estructura del documento se lea de un vistazo — útil al inspeccionar la respuesta de una API o depurar un archivo de configuración. Minificar hace exactamente lo contrario: quita todo espacio en blanco no significativo para reducir el archivo al mínimo posible, algo que importa cuando el JSON viaja por red o se guarda en un almacenamiento con límite de tamaño. En los dos casos el contenido de datos —claves, valores, estructura— es idéntico; solo cambia la representación en texto.
Cómo usar esta herramienta
Pega el JSON en el campo de entrada. La validación es reactiva: ante un error de sintaxis se muestra de inmediato la línea, la columna y el carácter exacto que lo causó. Si el JSON es válido, puede formatearse con la indentación preferida (2 o 4 espacios) o minificarse, y copiar el resultado con un clic.