Saltar al contenido
Aback Tools Logo

Cómo Validar JSON Online: Sintaxis, Esquema y Errores Comunes

Cómo validar JSON online: qué significa JSON válido según RFC 8259, validadores locales en el navegador, comprobación con JSON Schema, los cinco errores más comunes y sus soluciones, y validación programática en JS, Python y CI.

DH
Tutorials & How-Tos13 min de lectura2,800 palabras

Validar JSON es lo primero que deberías hacer cada vez que JSON sale de un sistema y entra en otro: antes de que llegue a tu API, antes de almacenarse en una base de datos, antes de que lo procese un script. Un JSON inválido no produce un error útil; produce un fallo de análisis que a menudo se atribuye al componente equivocado. Esta guía cubre cada método práctico para validar JSON online y offline, explica qué significa realmente "JSON válido" y te muestra cómo diagnosticar y corregir los errores más comunes.

< 1sTiempo de validación onlineSin instalación
0 KBDatos subidosSe ejecuta íntegramente en el navegador
5Errores de JSON más comunesTodos detectados por un validador

¿Qué significa realmente "JSON válido"?

JSON (JavaScript Object Notation) tiene una especificación formal definida por RFC 8259 y el estándar ECMA-404. Un documento JSON es válido cuando se ajusta completamente a esta especificación: ni más ni menos. Las reglas son más estrictas de lo que la mayoría espera, y varias cosas que JavaScript permite están explícitamente prohibidas en JSON.

Las reglas de la especificación JSON

  • Las cadenas deben usar comillas dobles - las cadenas con comillas simples (`'value'`) no son JSON válido aunque JavaScript las acepte.
  • Sin comas finales - `[1, 2, 3,]` y `{"a": 1,}` son inválidos; la coma tras el último elemento debe eliminarse.
  • Sin comentarios - los `// comentarios de línea` y `/* comentarios de bloque */` no forman parte de la especificación JSON.
  • Sin valores undefined - `undefined` es un concepto de JavaScript; JSON solo permite `null`, números, cadenas, booleanos, arrays y objetos.
  • Los números no pueden tener ceros a la izquierda - `012` no es JSON válido; usa `12`.
  • Las claves de objeto deben ser cadenas - `{1: "value"}` es inválido; las claves deben ser cadenas entre comillas dobles.
  • Sin caracteres de control en cadenas - los saltos de línea, tabuladores y otros caracteres de control sin procesar deben escaparse (`\n`, `\t`, etc.).

Note

JSON5 y JSONC (JSON con Comentarios) son superconjuntos relajados de JSON muy populares que permiten comentarios, comas finales y comillas simples. Si tu herramienta genera estos formatos, un validador JSON estándar los rechazará: usa un parser JSON5 o JSONC, o elimina las extensiones antes de validar.

Válido sintácticamente frente a válido semánticamente

Un documento JSON puede ser sintácticamente válido (bien formado según la especificación) pero semánticamente inválido para tu aplicación. Por ejemplo, un objeto JSON con "age" establecido en -5 es JSON válido, pero una edad inválida para un perfil de usuario. La validación de sintaxis es lo que comprueba un parser JSON; la validación de esquema es lo que detecta los errores semánticos. Ambas capas importan, y esta guía cubre las dos.

Cómo validar JSON online en segundos

La forma más rápida de comprobar si una cadena JSON es válida es pegarla en un validador JSON online. Sin instalación, sin configuración, sin cuenta. El resultado es instantáneo y, cuando usas una herramienta basada en navegador, tus datos nunca salen de tu dispositivo.

Un texto JSON es un valor serializado. Nótese que ciertas especificaciones anteriores de JSON restringían el texto JSON a ser un objeto o un array.

- Especificación JSON, RFC 8259

Usar el Formateador y Validador de JSON

El Formateador y Validador de JSON de Aback Tools valida y formatea JSON simultáneamente. Pega cualquier cadena JSON y te dirá de inmediato si la entrada es válida. Si es inválida, la herramienta resalta la posición del error con un número de línea y una descripción en lenguaje llano de qué salió mal. Si es válida, genera JSON limpio e indentado que puedes copiar directamente a tu proyecto.

Este enfoque de doble propósito importa en la práctica. Cuando recibes JSON de una API, lo copias de un archivo de configuración o lo extraes de una línea de log, el texto sin procesar suele estar minificado y ser difícil de leer. Formatearlo como parte de la validación te da dos cosas a la vez: la confirmación de que el JSON es válido y una versión legible que sí puedes inspeccionar.

Tip

Si solo necesitas una respuesta sí/no - ¿es JSON válido? - pega tu payload y mira el indicador de estado en la parte superior del panel de salida. Una insignia verde de "JSON válido" significa que el parser aceptó la entrada sin errores. Un indicador rojo significa que algo falla, y los detalles del error te dirán exactamente qué.

Formateador y Validador de JSON

Pega cualquier cadena JSON para validarla, imprimirla con formato y resaltar su sintaxis al instante en tu navegador - con diagnósticos de error a nivel de línea y sin subidas.

Open tool

Errores comunes de JSON y cómo corregirlos

La mayoría de los documentos JSON inválidos fallan por una de cinco razones. Conocer estos patrones te permite corregir errores rápidamente sin depender por completo de una herramienta para diagnosticarlos.

1

Coma final

Las comas finales son el error JSON más común, en gran parte porque JavaScript y la mayoría de lenguajes modernos las permiten en literales de objeto y array. JSON no. Elimina la coma tras la última propiedad de cada objeto y tras el último elemento de cada array.

Coma final - inválido vs válido
json
// ❌ Inválido - coma tras la última propiedad
{
  "name": "Alice",
  "age": 30,
}

// ✓ Válido - sin coma final
{
  "name": "Alice",
  "age": 30
}
2

Cadenas con comillas simples

Las comillas simples son válidas en JavaScript pero están explícitamente prohibidas en JSON. Cada cadena - tanto claves como valores - debe usar comillas dobles. Este error es habitual cuando el JSON se escribe a mano o se copia de un literal de objeto JavaScript.

Comillas simples - inválido vs válido
json
// ❌ Inválido - clave y valor con comillas simples
{'city': 'London'}

// ✓ Válido - clave y valor con comillas dobles
{"city": "London"}
3

Comentarios en el JSON

JSON no tiene sintaxis de comentarios. Si tu JSON contiene comentarios `//` o `/* */` - a menudo añadidos a archivos de configuración como documentación - un parser JSON estándar rechazará el documento completo. Elimina todos los comentarios antes de analizar, o cambia a un formato como JSONC o JSON5 que los soporte de forma nativa.

Comentarios - JSON inválido
json
// ❌ Inválido - los comentarios no forman parte de la especificación JSON
{
  // Este es el objeto de usuario
  "name": "Alice",
  "role": "admin" /* permisos elevados */
}
4

Caracteres especiales sin escapar en cadenas

Los saltos de línea sin procesar, tabuladores, barras invertidas y ciertos caracteres de control Unicode deben escaparse dentro de las cadenas JSON. Un salto de línea sin procesar dentro de un valor de cadena - a diferencia de la secuencia de escape `\n` - hace el JSON no analizable. Este error aparece con frecuencia cuando el JSON se genera concatenando cadenas en el código en lugar de usar un serializador JSON adecuado.

Caracteres sin escapar - inválido vs válido
json
// ❌ Inválido - salto de línea sin procesar dentro del valor
{"message": "line one
line two"}

// ✓ Válido - salto de línea escapado
{"message": "line one\nline two"}
5

Llaves o corchetes sin pareja

Una llave sin cerrar, un corchete sin cerrar o un delimitador de cierre sin pareja provoca un fallo de análisis. Es habitual en JSON editado a mano y en JSON generado por código que construye payloads mediante concatenación de cadenas. Un formateador con emparejamiento de delimitadores los hace visibles de inmediato.

Delimitadores sin pareja - inválido vs válido
json
// ❌ Inválido - array abierto pero objeto cerrado
{
  "items": [1, 2, 3
}

// ✓ Válido - delimitadores emparejados
{
  "items": [1, 2, 3]
}

Detector de Claves Duplicadas en JSON

Detecta claves de objeto repetidas en cualquier payload JSON - las sobrescrituras silenciosas por claves duplicadas son válidas según algunos parsers pero causan pérdida de datos y errores difíciles de diagnosticar.

Open tool

Validación con JSON Schema: comprobar valores, no solo sintaxis

La validación de sintaxis confirma que el JSON está bien formado. La validación de esquema confirma que el JSON contiene los datos correctos: los campos correctos, los tipos correctos, los rangos de valores correctos. Son dos comprobaciones distintas y ambas se necesitan en sistemas de producción.

¿Qué es JSON Schema?

JSON Schema es un vocabulario para describir la estructura y las restricciones de un documento JSON. Un documento de esquema especifica qué campos son obligatorios, qué tipo debe tener cada campo, valores mínimos y máximos para números, patrones de cadena permitidos y más. Al validar un documento JSON contra un esquema, obtienes errores precisos como "el campo 'email' es obligatorio" o "el campo 'age' debe ser un entero positivo" - no solo "JSON inválido".

Usar el Validador de JSON Schema

El Validador de JSON Schema de Aback Tools acepta un payload JSON y un JSON Schema y valida el payload contra las restricciones del esquema. Informa de errores a nivel de regla con la ruta de campo exacta que falló - así sabes no solo que la validación falló, sino qué campo violó qué regla. Es la herramienta adecuada cuando necesitas verificar que una respuesta de API cumple un contrato o que un archivo de configuración contiene todos los ajustes requeridos.

Note

Si tienes un payload JSON pero aún no tienes esquema, el [Generador de JSON Schema](/tools/data/converters/json-schema-generator) infiere automáticamente un esquema Draft-07 o Draft 2020-12 a partir de tu payload. Detecta tipos, campos obligatorios, formatos de cadena (email, fecha, URI) y estructuras de objetos anidados. Usa el esquema generado como punto de partida y refínalo con restricciones adicionales.

Validación de sintaxis frente a validación de esquema

AspectoValidación de sintaxisValidación de esquema
Qué compruebaConformidad con la especificación JSONTipos de datos, campos, restricciones
Herramienta requeridaCualquier parser JSONValidador de JSON Schema
Salida de errorPosición línea/carácterRuta de campo + regla violada
DetectaComillas ausentes, comas incorrectasTipo erróneo, campo ausente
Cuándo usarlaSiempre - primera comprobaciónCuando existe un contrato
Aprobar = garantíaAnalizable por cualquier librería JSONCoincide con tu modelo de datos

Generar un esquema desde un payload existente

La forma más rápida de añadir validación de esquema a un proyecto existente es generar el esquema a partir de un payload known-good. Pega un objeto JSON representativo en el Generador de JSON Schema y producirá un esquema completo con definiciones de tipos, campos obligatorios y pistas de formato. Copia la salida a tu proyecto y úsala como contrato de validación para todos los payloads futuros de ese tipo.

Validar JSON de forma programática

Las herramientas online son la opción más rápida para comprobaciones puntuales, pero los sistemas de producción necesitan validación de JSON incrustada en el código. Cada lenguaje de programación importante tiene al menos una librería de análisis JSON bien mantenida, y la mayoría tiene también librerías dedicadas de validación de esquemas.

JavaScript y TypeScript

En JavaScript, `JSON.parse()` lanza un `SyntaxError` cuando recibe JSON inválido - envuélvelo en un try/catch para manejar el error con elegancia. Para validación de esquema, AJV (Another JSON Validator) es la librería más utilizada, con soporte de JSON Schema Draft-07 hasta Draft 2020-12 y alto rendimiento. Zod es una alternativa popular orientada a TypeScript que valida JSON contra esquemas de tipos en tiempo de ejecución con inferencia completa de TypeScript. El convertidor de JSON a Esquema Zod de Aback Tools genera un esquema Zod a partir de cualquier payload JSON automáticamente.

Validación de sintaxis en TypeScript
typescript
function isValidJson(input: string): boolean {
  try {
    JSON.parse(input);
    return true;
  } catch {
    return false;
  }
}

// Or get the parsed value and the error together:
function parseJson<T>(input: string): { data: T } | { error: string } {
  try {
    return { data: JSON.parse(input) as T };
  } catch (e) {
    return { error: (e as SyntaxError).message };
  }
}

Python

El módulo `json` integrado de Python lanza `json.JSONDecodeError` (subclase de `ValueError`) cuando el análisis falla. El objeto de error incluye el número de línea, la columna y una descripción. Para validación de esquema, jsonschema y pydantic son las opciones estándar - pydantic es especialmente popular en proyectos FastAPI porque valida y deserializa JSON en objetos Python tipados en un solo paso.

Validación de sintaxis en Python
python
import json

def is_valid_json(text: str) -> bool:
    try:
        json.loads(text)
        return True
    except json.JSONDecodeError as e:
        print(f"Invalid JSON at line {e.lineno}, col {e.colno}: {e.msg}")
        return False

Línea de comandos

En cualquier sistema con Python instalado, `python3 -m json.tool input.json` valida y da formato bonito a un archivo JSON en un solo comando. El código de salida es distinto de cero en caso de fallo, lo que lo hace adecuado para scripts de shell y pipelines de CI. La herramienta `jq` es una alternativa más potente: `jq . input.json` valida y formatea, mientras que `jq 'empty' input.json` valida sin producir salida.

Validación rápida de JSON desde la línea de comandos
bash
# Validate and pretty-print with Python (built-in, no install)
python3 -m json.tool input.json

# Validate silently with jq (exit code 0 = valid, 1 = invalid)
jq empty input.json && echo "Valid" || echo "Invalid"

# Validate multiple files with a loop
for f in *.json; do
  jq empty "$f" && echo "$f: valid" || echo "$f: INVALID"
done

Tip

En pipelines de CI, usa `jq empty` en lugar de `python3 -m json.tool` para validar JSON. `jq` es más rápido con archivos grandes, no produce salida en caso de éxito (manteniendo los logs limpios) y devuelve un código de salida significativo sobre el que tu sistema de CI puede actuar sin lógica adicional.

Validar formatos JSON especiales

La validación JSON estándar cubre archivos `.json` y payloads de API. Pero el JSON aparece en varios otros formatos con sus propios requisitos de validación - formatos donde un parser JSON estándar produce resultados incorrectos o rechaza toda la entrada.

JSONL y NDJSON (JSON Lines)

Los archivos JSON Lines (`.jsonl`) contienen un objeto JSON por línea sin array envolvente. Este formato es estándar para archivos de log, conjuntos de datos de ML y APIs de streaming. Un parser JSON estándar rechaza un archivo JSONL porque el archivo como conjunto no es un documento JSON válido - cada línea debe analizarse individualmente. El Validador y Reparador de JSON Lines valida cada línea por separado, informa de qué números de línea tienen errores y ofrece autocorrecciones seguras para problemas de formato comunes.

JSON con claves duplicadas

La especificación JSON técnicamente permite claves duplicadas en objetos, pero el comportamiento es indefinido - distintos parsers lo manejan de forma diferente. El `json.loads()` de Python conserva el último valor; algunos parsers conservan el primero; otros lanzan un error. En la práctica, las claves duplicadas son casi siempre un error - una fusión mal hecha o un error de plantilla. El Detector de Claves Duplicadas en JSON encuentra todas las claves repetidas y te dice exactamente dónde ocurren.

JSON en archivos de configuración YAML

YAML es un superconjunto de JSON, así que todo JSON válido es también YAML válido. Pero el JSON incrustado en archivos YAML - como valor de un campo de cadena, por ejemplo - necesita su propia validación. Si trabajas con configs YAML que contienen valores JSON incrustados, valida las porciones JSON por separado con el formateador JSON y luego valida el YAML general con un validador YAML. Si tu proyecto usa ambos formatos y necesitas comparar dos archivos de configuración, el Resaltador de Diferencias JSON/YAML maneja ambos simultáneamente.

Warning

Nunca uses un parser YAML como sustituto de un validador JSON. YAML permite construcciones que no son JSON válido - que YAML acepte tu entrada no confirma que el JSON cumpla la especificación. Usa un parser específico de JSON para validar JSON, incluso cuando el JSON esté incrustado en un archivo YAML.

Buenas prácticas de validación de JSON

Validar JSON una vez antes de una operación importante está bien. Construir la validación en cada punto donde el JSON entra o sale de tu sistema es mejor. Estas prácticas aplican tanto si construyes una API, procesas pipelines de datos o gestionas archivos de configuración.

Validar en la ingesta, no en el consumo

El momento adecuado para validar JSON es cuando entra por primera vez en tu sistema - en el límite de la API, en el gestor de subida de archivos, en el consumidor de la cola de mensajes. Validar en el consumo (en la función que lee un valor en lo profundo de tu código) significa que los datos inválidos se propagan más lejos antes de fallar, haciendo el error más difícil de rastrear. Valida temprano y rechaza la entrada inválida en el punto de entrada.

Usa un esquema, no solo una comprobación de sintaxis

La validación de sintaxis es el mínimo exigible. En cualquier sistema donde el JSON transporta datos críticos para el negocio - registros de usuarios, payloads de pago, valores de configuración - un esquema añade una segunda capa que detecta tipos erróneos, campos obligatorios ausentes y valores fuera de rango que la validación de sintaxis no puede detectar. Genera tu esquema inicial a partir de un payload known-good con el Generador de JSON Schema y refínalo a medida que evoluciona tu modelo de datos.

Maneja los errores de validación explícitamente

Una llamada a `JSON.parse()` envuelta en un try/catch que se traga el error y devuelve null es peor que no validar - oculta el problema. Cuando la validación de JSON falla, registra el error con la fuente de entrada, el mensaje de error exacto y suficiente contexto para reproducir el problema. Devuelve un error significativo al llamante en lugar de un resultado vacío que provoque un error secundario en otro lugar.

  • Registra la entrada sin procesar - cuando la validación de JSON falla en producción, la entrada sin procesar es el artefacto de depuración más valioso. Registra una versión truncada (primeros 500 caracteres) junto con el error.
  • Incluye contexto de origen - anota de dónde vino el JSON: qué endpoint de API, qué archivo, qué mensaje de cola. Esto convierte un error de análisis genérico en un incidente accionable.
  • Configura alertas para fallos de análisis - un pico de errores de validación JSON suele señalar un cambio disruptivo en una API aguas arriba o un despliegue que introdujo un bug de serialización.
  • Prueba con entradas inválidas - incluye JSON inválido (coma final, comilla ausente, tipo erróneo) en tu suite de pruebas para confirmar que tu manejo de errores se comporta correctamente.

Tip

Al trabajar con respuestas de APIs de terceros, valida siempre antes de procesar - incluso para APIs de confianza. Los proveedores de API cambian la forma de las respuestas, añaden campos nuevos e introducen cambios disruptivos. Un validador de esquemas con esquemas versionados te da una alerta temprana de cambios de contrato antes de que causen fallos silenciosos aguas abajo.

Validador de JSON Schema

Valida cualquier payload JSON contra un JSON Schema y obtén diagnósticos de error a nivel de regla con rutas de campo exactas - sin instalación, sin subidas.

Open tool

Key takeaways

  • El JSON válido sigue estrictamente RFC 8259: solo cadenas con comillas dobles, sin comas finales, sin comentarios, sin `undefined` y sin caracteres de control sin escapar.
  • El Formateador y Validador de JSON valida y formatea JSON simultáneamente, con diagnósticos de error a nivel de línea que se ejecutan íntegramente en tu navegador.
  • Los cinco errores de JSON más comunes son: comas finales, cadenas con comillas simples, comentarios, caracteres de control sin escapar y delimitadores sin pareja - todos detectados al instante por un validador.
  • La validación de sintaxis confirma la analizabilidad; la validación con JSON Schema confirma que tus datos cumplen el contrato esperado - ambas comprobaciones sirven a propósitos distintos.
  • Usa `JSON.parse()` en un try/catch para validación en código; usa `jq empty` para comprobaciones rápidas por CLI en pipelines de CI.
  • Formatos especiales como JSONL, JSON con claves duplicadas y JSON incrustado en YAML requieren validadores específicos del formato en lugar de un parser JSON estándar.
  • Valida el JSON en la ingesta, no en el consumo - rechaza los datos inválidos en el punto de entrada antes de que se propaguen por tu sistema.

Preguntas frecuentes

The fastest method is to paste the string into the JSON Formatter & Validator on Aback Tools - it reports valid or invalid in under a second with no setup. In code, use JSON.parse() wrapped in a try/catch in JavaScript, or json.loads() in a try/except in Python. Both throw an exception on invalid input and return the parsed object on success. For command-line checks, `jq empty input.json` exits with code 0 on valid JSON and code 1 on invalid.

Trailing commas are the single most common JSON error. They appear after the last property in an object or the last element in an array: `{"name": "Alice",}` or `[1, 2, 3,]`. JSON does not allow trailing commas even though JavaScript, Python, and most other languages do. The second most common error is single-quoted strings - JSON requires double quotes for both keys and values.

No. The JSON specification (RFC 8259) explicitly excludes comments. Both `//` line comments and `/* */` block comments are invalid in standard JSON. If you need JSON with comments, consider JSONC (used by VS Code config files) or JSON5, both of which are relaxed supersets. When using these formats, make sure your parser explicitly supports them - a standard JSON parser will reject the file.

Syntax validation checks whether the JSON is well-formed per the RFC 8259 specification - parseable by any standard JSON library. Schema validation checks whether the data inside the JSON conforms to a contract: required fields, correct types, value ranges, string formats. A JSON document can be syntactically valid but semantically wrong - for example, `{"age": "thirty"}` is valid JSON but fails a schema that requires age to be a number.

If your JSON.parse() call appears to succeed but returns null, the input string itself is the JSON text `null` - which is perfectly valid JSON. The value `null` is one of the six JSON value types. If you expected an object or array, the input may have been a null literal rather than a missing or empty string. Wrap JSON.parse() in a function that also checks `typeof result !== "object" || result === null` if you specifically need an object.

A JSONL file contains one JSON object per line and is not a valid JSON document on its own - a standard JSON parser rejects it because the file as a whole does not match the JSON grammar. Use the JSON Lines Validator & Fixer on Aback Tools, which validates each line individually and reports which line numbers have parse errors. For CLI validation, `jq empty < input.jsonl` also works by reading each line as a separate JSON value.

The JSON specification says behavior is undefined when an object contains duplicate keys - it does not explicitly forbid them, but different parsers handle them differently. Python keeps the last value, some parsers keep the first, and others throw an error. In practice, duplicate keys are almost always a bug. Use the JSON Duplicate Key Detector on Aback Tools to scan any payload for repeated keys before it causes a silent data-loss issue in your application.

The simplest option is `jq empty filename.json` - it exits with code 0 on valid JSON and code 1 on invalid, with no output on success. For schema validation in CI, use AJV CLI (`ajv validate -s schema.json -d data.json`) or write a short script using Python's jsonschema library. Both integrate cleanly with GitHub Actions, GitLab CI, and other systems that block on non-zero exit codes. Run validation as an early step before any processing to catch issues at the source.

ShareXLinkedIn