Saltar al contenido principal

Validar JSON

El validador de JSON realiza la validación de sintaxis estricta de RFC 8259 directamente en tu navegador, sin transmitir tu payload por la red. Señala la línea y la columna exactas de los errores de sintaxis con un caret visual, un diagnóstico en lenguaje claro y una clasificación específica de comas finales, comillas simples, claves sin comillas, corchetes sin parear, BOM y comillas inteligentes de procesador de textos.

Solo local
En espera de datos: pega un documento JSON o haz clic en «Cargar ejemplo»
Documento JSON a validar
0 B1 líneaLín. 1, Col. 1

¿Cómo funciona Validar JSON?

Las implementaciones estándar de JSON.parse() del navegador devuelven mensajes de error notoriamente poco útiles, como "Unexpected token in JSON at position 4812". Esa excepción en bruto obliga a los desarrolladores a contar desplazamientos de bytes a mano y a adivinar qué comilla, coma o corchete está fuera de sitio.

El validador de ToolsByUs implementa un escáner léxico no recursivo y un validador de tokens dedicados que rastrean números de línea, posiciones de columna, pilas de anidamiento de delimitadores y lookaheads de caracteres conforme a RFC 8259:

  • Cero excepciones en bruto: las excepciones se capturan y se traducen a informes de diagnóstico accionables, con fragmentos caret exactos que apuntan al carácter problemático en la línea y la columna exactas.
  • Clasificación explícita de errores: identifica con precisión comas finales, claves de objeto sin comillas, delimitadores con comilla simple, comas separadoras ausentes y corchetes sin parear (por ejemplo, cerrar un array con una llave).
  • Detección de comillas inteligentes y BOM: detecta marcas de orden de bytes UTF-8 (BOM) sutiles e invisibles (0xFEFF) y comillas inteligentes curvas (“ y ”), introducidas con frecuencia al copiar JSON desde editores de texto enriquecido o procesadores de textos.
  • Gramática numérica estricta: rechaza números no finitos de IEEE 754 como NaN, Infinity y ceros a la izquierda en los números (como 012), que violan la sección 6 de RFC 8259.
  • Protección de profundidad 10,000: emplea una máquina de estados finita iterativa que valida estructuras profundamente anidadas sin llegar al desbordamiento de la pila de llamadas del navegador.

El parser funciona manteniendo una máquina de estados que transita entre los estados BEFORE_KEY, AFTER_KEY, COLON, BEFORE_VALUE y AFTER_VALUE, verificando a la vez que los corchetes estructurales de apertura ( [ y { ) emparejan con sus contrapartes de cierre exactas en orden de último en entrar, primero en salir.

Ejemplo de entrada malformada

{
  'service': "auth",
  "active": true,
}

Salida de ejemplo

Line 2, Column 3:
  'service': "auth",
  ^
Error: Single quotes are not allowed in JSON. Use double quotes (").
Recommendation: Replace single quotes with double quotes.

¿Qué opciones y casos límite admite Validar JSON?

Referencia técnica y opciones
ParámetroTipoValor predeterminadoComportamiento y casos límite
TRAILING_COMMAError de sintaxisProhibidoComa final antes de } o ]. Aunque es válido en JavaScript/JSON5, viola la Sección 4 de RFC 8259.
SINGLE_QUOTESError de sintaxisProhibidoComillas simples (') que envuelven cadenas o claves de propiedad. JSON requiere comillas dobles ASCII estándar (").
UNQUOTED_KEYError de sintaxisProhibidoIdentificadores de propiedades de objeto sin comillas dobles (por ejemplo, { name: 'value' }).
MISSING_COMMAError de sintaxisProhibidoPares clave-valor consecutivos o miembros de array sin un delimitador de coma intermedio.
MISMATCHED_BRACKETError de estructuraProhibidoDelimitadores de contenedor no coincidentes, como cerrar un array con una llave ( ] vs } ).
SMART_QUOTESError de codificaciónDetectadoComillas tipográficas de procesador de texto (« »). Se diagnostica automáticamente con la ubicación de la columna y la solución.
BOM (Byte Order Mark)Error de codificación0xFEFFLa marca de orden de bytes UTF-8 inicial está prohibida por la Sección 8.1 de RFC 8259 en los intercambios de red.
NAN_INFINITY_REJECTEDGramática numéricaProhibidoNaN, Infinity y -Infinity no son tokens numéricos JSON válidos según la Sección 6 de RFC 8259.

Preguntas frecuentes

¿Por qué la sintaxis válida de objetos JavaScript falla en la validación de JSON?

JSON (RFC 8259) es un formato de intercambio, no un lenguaje de programación. Las características permitidas en JavaScript —como comas finales, cadenas con comillas simples, claves de propiedad sin comillas, comentarios y valores NaN— están explícitamente prohibidas por el estándar JSON para garantizar la interoperabilidad entre lenguajes de los parsers de Python, Go, Java, C++ y Rust.

¿Qué indica el puntero caret?

El caret (^) apunta directamente a la columna del carácter donde el parser léxico encontró un carácter inesperado o una secuencia ilegal, y te ayuda a localizar la rotura exacta de sintaxis incluso en payloads de varios megabytes.

¿Cómo detecta el validador las comillas inteligentes?

Cuando el texto se copia de herramientas de documentación, entradas de blog o clientes de correo, las comillas dobles ASCII (") suelen convertirse en comillas curvas tipográficas (Unicode U+201C y U+201D). El validador detecta explícitamente esos puntos de código Unicode y recomienda sustituirlos por comillas dobles estándar.

¿Por qué JSON rechaza los comentarios?

Douglas Crockford eliminó deliberadamente los comentarios de la especificación JSON original para impedir que los parsers albergaran directivas de procesamiento o pragmas, y asegurar que JSON siguiera siendo puramente un formato de intercambio de datos. Para archivos de configuración que admitan comentarios, usa JSONC.

¿Cómo se manejan las claves duplicadas según RFC 8259?

RFC 8259 especifica que las claves de objeto deberían ser únicas. Mientras algunos parsers nativos sobrescriben silenciosamente los valores anteriores con los posteriores, ToolsByUs resalta las claves duplicadas con avisos de diagnóstico para prevenir errores sutiles de pérdida de datos.

¿Se envía mi payload validado a algún backend?

No. El parseo, la comprobación de tokens y la validación ocurren 100% del lado del cliente, dentro de tu navegador. Ningún dato sale jamás de tu equipo, garantizado por nuestra arquitectura sin backend.