Saltar al contenido

Validar tu JSON

No solo válido o no válido: la línea, la columna, el carácter y qué hacer al respecto. No se guarda nada; la comprobación se hace aquí mismo.

  • Nunca se guarda
  • Sin filas ni esperas
  • Sin registro, sin marca de agua
Formateado

Pega el JSON y se valida mientras escribes.

Cómo funciona

1

Pega tu JSON

O suelta el archivo. Se lee donde está; no se envía nada a ninguna parte.

2

Lee el veredicto

Válido, con un recuento de lo que contiene. O no válido, con el punto exacto marcado.

3

Corrige y vuelve a comprobar

Edita directamente y la respuesta se actualiza mientras escribes.

Qué prohíbe realmente JSON

La gramática de JSON es deliberadamente mínima, y casi todos los fallos de validación se deben a unas pocas cosas que la gente toma de JavaScript y que JSON nunca adoptó. Una coma final después del último elemento. Comillas simples en lugar de dobles. Claves sin comillas. Comentarios: JSON no tiene ni tuvo nunca. NaN e Infinity, que son números válidos en JavaScript y no son JSON válido. Y una marca de orden de bytes (BOM) al principio, invisible en cualquier editor, que algunas herramientas de Windows agregan al guardar como UTF-8 y que hace que un documento perfectamente correcto falle en su primer carácter.

Hay dos cosas que están permitidas y aun así te darán problemas, y por eso “válido” no es lo mismo que “correcto”. Las claves duplicadas no están prohibidas por la especificación, pero cada parser las resuelve de forma distinta (la mayoría se queda con la última), así que un documento con una clave repetida se valida aquí y significa cosas distintas en distintos lenguajes. Y los números no tienen un límite de precisión definido en JSON, mientras que la mayoría de los parsers los leen como punto flotante: un entero por encima de unos nueve mil billones se redondea sin avisar, y por eso los identificadores grandes se envían tan a menudo como cadenas.

Lo que obtienes es la línea, la columna y el carácter exactos donde se detuvo el análisis, lo que suele ser más útil que el propio mensaje. Un parser informa del punto en que el documento dejó de tener sentido, no de dónde se cometió el error: una llave de cierre que falta se informa al final del archivo, y una coma que falta se informa en el token siguiente. Mirar justo antes de la posición indicada es el hábito que más tiempo ahorra.

Bien formado no es lo mismo que correcto, y la distinción importa. Esto confirma que la sintaxis se puede analizar. Si el documento contiene los campos que exige tu API, si un valor está dentro del rango, si una fecha es realmente una fecha: nada de eso es una cuestión de JSON. Eso es validación de esquema, necesita un esquema, y un documento puede ser impecable aquí y ser rechazado de inmediato por el servicio al que lo envías.

Si buscas otra cosa

Para comprobar documentos contra un esquema en lugar de una gramática, JSON Schema es el estándar y ajv es su implementación más rápida: te dirá que falta un campo obligatorio o que un valor está fuera de rango, que suele ser la pregunta que de verdad tienes. check-jsonschema ejecuta las mismas comprobaciones desde la línea de comandos y en CI.

Para cualquier cosa en la línea de comandos, jq es la herramienta que hay que tener: jq empty file.json valida y no imprime nada si todo va bien, justo lo que necesita un script, y jq . da formato. Para archivos demasiado grandes para caber en memoria, jq --stream e ijson de Python analizan de forma incremental, algo que ninguna página que carga el documento entero puede hacer.

Preguntas frecuentes

¿Se guarda mi JSON en algún lugar?

No. No hay llamadas al servidor ni registros, y no se guarda nada. Puedes desconectarte de internet después de que cargue la página y sigue funcionando. Aquí eso importa más de lo que parece: lo que la gente pega en un formateador en línea son respuestas de API, archivos de configuración y mensajes de error, y es habitual que contengan tokens, datos de clientes y nombres de servidores internos.

¿Qué me dice cuando el JSON está roto?

La línea, la columna, la propia línea con un signo ^ debajo del carácter exacto, y qué se esperaba ahí. La mayoría de los JSON se rompen por una de cuatro razones (una coma final, comillas simples en lugar de dobles, una clave sin comillas o un salto de línea real dentro de una cadena), y cada una se nombra en lugar de describirse como un error de sintaxis genérico.

¿Qué se considera válido?

RFC 8259, de forma estricta. Eso significa claves entre comillas dobles, sin comas finales, sin comentarios y sin ceros a la izquierda ni hexadecimales en los números. Ser estricto es la razón de ser de un validador: si aceptara lo que tu parser va a rechazar, no te habría dicho nada.

¿Comprueba mi JSON contra un esquema?

No: esto comprueba la sintaxis, que es otra pregunta. La sintaxis es si el texto es JSON o no. Un esquema es si los datos tienen los campos y tipos correctos. Esta página responde a lo primero: te dirá que el archivo se puede analizar y te mostrará la estructura que encontró, pero no sabe cómo deberían ser tus campos.

¿Por qué dice que es válido si mi API lo sigue rechazando?

Porque un JSON válido y el JSON que quiere tu API son cosas distintas. Un documento sintácticamente perfecto puede no tener un campo obligatorio, usar una cadena donde va un número o anidar las cosas de forma distinta a lo que espera el endpoint. Compara el resumen de estructura que te muestra esta página con la documentación de la API: la diferencia suele verse de inmediato.

¿Se comprueban bien los números grandes?

Sí, dígito por dígito; la mayoría de los validadores los rompen sin avisar. Un número de JavaScript es un float de 64 bits, así que solo puede guardar con exactitud enteros hasta 9,007,199,254,740,991. Cualquier número mayor (el ID de una publicación de Twitter/X, un snowflake de Discord, un número de cuenta bancaria, una clave de base de datos de 64 bits) pierde sus últimos dígitos en cuanto pasa por `JSON.parse`. El número sigue pareciendo creíble, y eso es lo que lo hace peligroso: 7205759403792793600 se convierte sin avisar en 7205759403792793000. Esta página conserva exactamente los dígitos que pegaste y te dice cuántos números tuvo que proteger.

¿Hay un límite de tamaño?

La memoria disponible, no un tope que impongamos nosotros. Los documentos de unos pocos megabytes se formatean al instante; los muy grandes están limitados por cuánto se puede mantener en memoria a la vez, no por nada de nuestra parte.

Conviene saber: Esto comprueba que el JSON esté bien formado, no que tenga sentido. Un documento puede ser perfectamente válido y aun así no tener los campos que espera tu API: eso es validación de esquema, y necesita un esquema. Lo que obtienes aquí es la línea, la columna y el carácter exactos donde se detuvo el análisis.

Agrega esta herramienta a tu sitio web

Gratis para cualquier blog, página de clase o artículo de ayuda. Pega un fragmento de código y tus visitantes podrán usarla directamente en tu página.