Formateador y Validador JSON

Analice, formatee, minifique y valide estructuras JSON conforme a la especificación formal RFC 8259 con detección de errores en tiempo real.

Entrada
JSON válido
Tamaño466 B
Nivel3
Nodos26
{
"name": "John Doe",
"age": 30,
"isActive": true,
"address": {
"street": "123 Main St",
"city": "New York",
"zip": "10001",
"coordinates": {
"lat": 40.7128,
"lng": -74.006
}
},
"hobbies": [
"reading",
"coding",
"hiking"
],
"metadata": {
"createdAt": "2024-01-15T08:30:00Z",
"updatedAt": null,
"tags": [
"vip",
"premium"
]
},
"scores": [
95,
87,
92,
78
]
}

Accesos directos de navegación

  • Ctrl / Cmd + FEnfoca la barra de búsqueda para filtrar claves y valores en la vista en árbol (Esc para limpiar).
  • Clic en claveHaga clic sobre cualquier propiedad o corchete en la vista en árbol para copiar su ruta JSONPath absoluta al portapapeles.
  • Arrastrar y soltarSuelte archivos locales .json o de texto directamente sobre el panel de entrada.

Cómo funciona el análisis, formateo y validación de JSON

JSON (JavaScript Object Notation) es un formato abierto de intercambio de datos basado en texto, definido formalmente por las especificaciones RFC 8259 y ECMA-404. Aunque se originó a partir de la notación literal de objetos de JavaScript, es un estándar completamente independiente del lenguaje e implementado de forma ubicua en el ecosistema de software actual.

1. Tokenización léxica

El flujo de caracteres de entrada se escanea para identificar tokens primitivos: delimitadores estructurales ({, }, [, ], :, ,), cadenas literales, números, booleanos y null.

2. Verificación gramatical

Los tokens se evalúan contra las reglas gramaticales formales del estándar RFC 8259 para construir el árbol de objetos en memoria. Cualquier delimitador fuera de lugar o clave sin entrecomillar genera un error sintáctico inmediato con el desplazamiento del carácter.

3. Serialización canónica

La estructura parseada se serializa en texto legible mediante una sangría estandarizada de 2 espacios, o bien se despoja de todo espacio en blanco prescindible para generar una carga minificada de alta densidad de transferencia.

Tipos de datos y matriz gramatical según RFC 8259

El estándar formal de JSON contempla con precisión seis tipos de datos primitivos y estructurales. Comprender las restricciones estrictas de la especificación RFC 8259 evita fallos de deserialización en servicios distribuidos:

Tipo de datoReglas de especificaciónEjemplo válidoEstrictamente prohibido
StringDebe estar delimitado obligatoriamente por comillas dobles ("). Los caracteres de control deben escaparse (\n, \t, \", \\). Unicode compatible vía \uXXXX."Hola\nMundo"Comillas simples ('texto'), saltos de línea sin escapar, acentos graves
NumberEntero en base 10 o punto flotante estándar, con exponente opcional (e o E). Se permite prefijo negativo (-).42, -3.14, 1.5e3Ceros a la izquierda (042), hexadecimales (0xFF), NaN, Infinity, +42
BooleanLiterales en minúsculas sensibles a mayúsculas que representan valores de verdad lógica.true, falseTrue, False, 1, 0
NullLiteral en minúsculas que representa una ausencia deliberada de valor o referencia vacía.nullundefined, None, nil, NULL
ObjectColección desordenada de pares clave-valor separados por comas y delimitados por llaves. Las claves deben ser cadenas con comillas dobles.{ "id": 101 }Claves sin comillas ({ id: 101 }), comas finales al cierre
ArraySecuencia ordenada de cero o más valores separados por comas y delimitados por corchetes. Admite tipos heterogéneos.[1, "a", true]Comas finales ([1, 2, ]), elementos vacíos o dispersos ([1,,3])

Diagnóstico y corrección de errores sintácticos habituales

Debido a la estricta naturaleza del estándar JSON en comparación con la permisividad de JavaScript, es habitual encontrar excepciones de análisis sintáctico. A continuación se detallan los errores más frecuentes y sus soluciones técnicas:

1. Comas finales (Trailing Commas) en objetos o arrays

Lenguajes como JavaScript, Python o TypeScript admiten comas tras el último elemento. Sin embargo, en RFC 8259 las comas actúan estrictamente como separadores, no como terminadores. Una coma final provoca que el analizador anticipe un nuevo token y lance un error de cierre inesperado.

JSON no válido
{ "servicio": "API", "puerto": 8080, }
Válido según RFC 8259
{ "servicio": "API", "puerto": 8080 }

2. Comillas simples y propiedades sin entrecomillar

Todas las claves de propiedad y valores textuales deben encerrarse de forma rigurosa entre comillas dobles ("). Las comillas simples (') o identificadores literales sin entrecomillar provocan excepciones como SyntaxError: Unexpected token ' o Expected property name.

JSON no válido
{ estado: 'activo' }
Válido según RFC 8259
{ "estado": "activo" }

3. Caracteres de control y saltos de línea sin escapar

Los saltos de línea físicos (ASCII 0x0A / 0x0D) y tabuladores (ASCII 0x09) no pueden existir de forma literal dentro de cadenas JSON. El contenido multilínea debe codificarse mediante secuencias de escape estándar como \n para saltos de línea y \t para tabulaciones.

JSON no válido
{
  "registro": "Línea 1
  Línea 2"
}
Válido según RFC 8259
{
  "registro": "Línea 1\nLínea 2"
}

4. Ceros iniciales en números, NaN y undefined

Los valores numéricos en JSON no admiten ceros a la izquierda (para eliminar ambigüedades con el sistema octal). Asimismo, los valores especiales IEEE-754 como NaN e Infinity no están permitidos; los campos ausentes deben serializarse explícitamente como null u omitirse de la estructura.

JSON no válido
{ "codigo": 0123, "metrica": NaN, "propietario": undefined }
Válido según RFC 8259
{ "codigo": 123, "metrica": null, "propietario": null }

Inspección estructural: Árbol interactivo, JSONPath y ordenación

Formatear un JSON minificado en líneas legibles es solo el primer paso al inspeccionar respuestas de APIs. Al analizar cargas voluminosas de varios megabytes, las utilidades de navegación jerárquica agilizan considerablemente el flujo de trabajo:

Plegado jerárquico de nodos

Las respuestas con estructuras profundamente anidadas o miles de elementos en arrays saturan los editores convencionales. El plegado interactivo permite colapsar bloques secundarios y concentrarse exclusivamente en los campos relevantes.

Consulta directa de JSONPath

Cada nodo en el árbol interactivo se vincula con su expresión JSONPath determinista (por ejemplo, $.usuarios[0].direccion.ciudad). Un solo clic copia la ruta exacta para su uso inmediato en filtros de consulta, scripts de jq o aserciones de pruebas.

Ordenación alfabética de claves

Dado que los objetos JSON no tienen orden inherente, diferentes microservicios emiten las propiedades en secuencias distintas. Ordenar las claves alfabéticamente estandariza el documento, permitiendo comparaciones fiables y limpias en diffs de Git.

Validación sintáctica frente a validación con JSON Schema

En el desarrollo de software es fundamental distinguir entre la correcta formación sintáctica y la conformidad semántica de los datos:

Validación sintáctica (Formación léxica)

Se ejecuta durante el análisis inicial. Confirma que la cadena de caracteres se adhiere a la gramática de RFC 8259: delimitadores balanceados, cadenas escapadas y números válidos. Si el documento supera la validación sintáctica, cualquier motor compatible puede deserializarlo en memoria sin arrojar excepciones.

Pregunta que responde: "¿Es posible parsear este documento sin errores?"

Validación JSON Schema (Contrato de API)

Se ejecuta sobre una estructura JSON ya válida utilizando una especificación formal de esquema (como JSON Schema Draft 2020-12). Evalúa si las propiedades cumplen las reglas del dominio: presencia de campos obligatorios, rangos numéricos (minimum, maximum), formatos de texto (email, UUID) y enumeraciones.

Pregunta que responde: "¿Cumplen estos datos el contrato esperado por la API?"

Herramientas relacionadas de JSON y datos

Frequently Asked Questions

¿Cómo localiza esta herramienta la línea y columna exactas de un error sintáctico?

Cuando el motor de análisis nativo detecta una sintaxis no válida, el analizador léxico de JavaScript informa de la posición del carácter problemático. Nuestra herramienta convierte ese desplazamiento en coordenadas numéricas de línea y columna (indexadas en 1), resalta el contexto adyacente y señala con precisión el token que provoca el error en el editor de código.

¿Cuál es la diferencia fundamental entre el estándar JSON RFC 8259 y los objetos literales de JavaScript?

Aunque la notación JSON deriva de la sintaxis de objetos de JavaScript, la especificación RFC 8259 es mucho más estricta: todas las claves de los objetos deben estar delimitadas obligatoriamente por comillas dobles, las comillas simples están prohibidas, no se admiten caracteres de control sin escapar, no se permiten comas finales (trailing commas) y expresiones como NaN, Infinity o undefined son completamente inválidas.

¿Por qué las comas finales (trailing commas) están prohibidas en el estándar JSON?

La gramática formal de JSON (RFC 8259 / ECMA-404) define las estructuras de objetos y arrays estrictamente como secuencias de elementos separados por comas y delimitados por llaves o corchetes de cierre. Una coma adicional al final (por ejemplo, {"clave": "valor",}) rompe la compatibilidad con analizadores estrictos en lenguajes como Go, Rust, Java y Python, provocando excepciones inmediatas por fin inesperado de entrada.

¿En qué se diferencian la validación sintáctica y la validación mediante JSON Schema?

La validación sintáctica comprueba la correcta formación léxica y gramatical: verifica el cierre de llaves, el escape de caracteres y el formato de números. Por el contrario, JSON Schema evalúa el cumplimiento de las reglas de negocio y los contratos de datos: valida la presencia de campos obligatorios, los tipos de datos, los rangos numéricos y los patrones mediante expresiones regulares.

¿Por qué es recomendable ordenar alfabéticamente las claves para depurar APIs y en el control de versiones?

Según la especificación RFC 8259, los pares clave-valor dentro de un objeto JSON constituyen conceptualmente una colección no ordenada. Diversos servicios backend o bibliotecas de serialización emiten las claves en órdenes arbitrarios. Ordenar alfabéticamente las claves normaliza la estructura del documento, facilitando revisiones limpias en git diff y aserciones deterministas en pruebas automatizadas.