Toolbit

Formateador y validador JSON

Formatea, minifica y valida JSON con errores de sintaxis precisos por línea y columna.

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. 01 es inválido; hay que escribir 1 o 1.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 \uXXXX para 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.

Preguntas frecuentes

¿Por qué JSON no acepta comentarios ni comas finales?

Porque JSON fue diseñado como un formato de intercambio de datos minimalista, no como un lenguaje de configuración: la especificación (RFC 8259) deliberadamente excluye comentarios, comas finales y claves sin comillas para que cualquier parser en cualquier lenguaje lo interprete de forma idéntica, sin ambigüedad.

¿Qué diferencia hay entre formatear y minificar?

Formatear agrega indentación y saltos de línea para que un humano lo lea cómodo; minificar quita todo espacio innecesario para que ocupe el menor tamaño posible al transmitirlo o guardarlo. El contenido de datos es exactamente el mismo en los dos casos.

¿Por qué JSON.parse() a veces da un mensaje de error poco claro?

Porque el mensaje exacto de JSON.parse() depende del motor de JavaScript (V8, JavaScriptCore, SpiderMonkey dan mensajes distintos) y no siempre indica línea y columna de forma consistente. Esta herramienta usa su propio analizador para dar siempre la ubicación exacta del error.