Ir al contenido principal
Bethemesh

Validador de esquema JSON

Compara un documento JSON con un esquema directamente en tu navegador. Cada error muestra la ruta, la regla incumplida y una explicación clara.

Integrar este widget

Personaliza el aspecto, comprueba la vista previa y copia el código.

Vista previa

Tipo de código de integración

Código para copiar

Se adapta a tu página y Bethemesh ajusta su tamaño automáticamente.

¿Te ha resultado útil esta herramienta?

¿Cómo funciona esta herramienta?

Comprueba datos JSON frente a las restricciones compatibles de un esquema y localiza errores mediante ruta y palabra clave. El primer campo contiene datos y el segundo el esquema; que ambos sean JSON válido no demuestra el cumplimiento del contrato. La comprobación es local y no recupera esquemas remotos. Esta implementación cubre un subconjunto explícito de JSON Schema 2020-12, no todas sus extensiones.

Se admiten type, const, enum, límites numéricos y multipleOf. Las cadenas usan minLength, maxLength y pattern. Los arrays pueden utilizar minItems, maxItems, uniqueItems y un esquema items único. Los objetos admiten properties, required, additionalProperties, minProperties y maxProperties. También se evalúan allOf, anyOf, oneOf y not.

Se inspecciona todo el esquema antes que los datos, incluidas ramas no utilizadas. Las restricciones compatibles mal definidas producen errores de esquema. No se implementan $ref, $dynamicRef, prefixItems, contains, patternProperties, dependencias condicionales, reglas unevaluated ni if/then/else. Su presencia genera un diagnóstico explícito en lugar de un éxito engañoso.

format no valida correos, URL ni fechas en este motor. Las anotaciones como title y description no comprueban valores. Si necesitas vocabularios o funciones adicionales, elige un validador apropiado en lugar de quitar restricciones para obtener un resultado positivo.

La longitud cuenta puntos de código Unicode, no unidades UTF-16 ni caracteres visuales combinados. const, enum y uniqueItems ignoran el orden de propiedades de objetos, pero conservan el de arrays y los tipos escalares. Los números tienen la precisión de JavaScript; valores muy grandes y cálculos decimales requieren una estrategia adecuada en tu aplicación.

Cómo utilizar esta herramienta

  1. Separa datos y esquema

    Pega valores en Documento JSON y reglas en el campo de esquema. El botón de ejemplo muestra la separación sin contactar con servicios externos.

  2. Ejecuta y lee los diagnósticos

    Revisa resumen, ruta y regla de cada fila. Una ruta que empieza por $schema indica un problema en la definición del contrato.

  3. Corrige la entrada adecuada

    Modifica datos incorrectos o una regla mal definida. Cambiar un campo oculta resultados anteriores; vuelve a validar antes de concluir.

Casos de uso

Comprobar campos obligatorios

Describe un contrato pequeño con required y properties y compara respuestas API. Un campo presente con null puede necesitar un tipo anulable; no está simplemente ausente.

Comprobar entradas estructuralmente únicas

Usa uniqueItems para detectar objetos equivalentes aunque sus propiedades estén escritas en distinto orden.

Diagnosticar restricciones incompatibles

Distingue errores de datos, esquemas inválidos y palabras clave no compatibles. En los dos últimos casos no se ha comprobado el contrato completo.

Ejemplos

Contar un emoji como un punto de código

El bloque reúne ambas entradas: coloca document en el primer campo y schema en el segundo. El resumen del motor confirma que 😀 cumple una longitud entre 1 y 1.

Entrada

{
  "document": "😀",
  "schema": {
    "type": "string",
    "minLength": 1,
    "maxLength": 1
  }
}

Resultado

{
  "valid": true,
  "issues": []
}

Distinguir cadena y entero

id contiene la cadena "1", mientras el esquema exige integer. El resumen indica type en $.id. No se convierte automáticamente el valor a número.

Entrada

{
  "document": {
    "id": "1"
  },
  "schema": {
    "type": "object",
    "required": [
      "id"
    ],
    "properties": {
      "id": {
        "type": "integer"
      }
    },
    "additionalProperties": false
  }
}

Resultado

{
  "valid": false,
  "issues": [
    {
      "path": "$.id",
      "keyword": "type"
    }
  ]
}

Consejos y buenas prácticas

  • Prueba documentos deliberadamente inválidos para confirmar que cada regla relevante se aplica de verdad.
  • Conserva las restricciones necesarias. Cambia de validador si no están soportadas, sin debilitar el esquema.
  • Un campo ausente y null requieren comprobaciones distintas: required verifica la clave y type su valor.
  • La validación de esquema no comprueba autorizaciones, existencia de recursos ni otras reglas del servidor.

Fuentes y referencias

Preguntas frecuentes

¿Se resuelven referencias $ref?

No. No se evalúan referencias locales ni remotas. Generan un diagnóstico explícito y no se carga ningún archivo ni URL de esquema.

¿Por qué format: email acepta cualquier cadena?

El motor no trata format como una aserción de validación. Usa restricciones compatibles o un validador con el vocabulario de formatos que requiere el contrato.

¿Cómo cuenta minLength un emoji?

Un emoji de un solo punto de código, como 😀, cuenta uno. Modificadores, marcas combinadas y secuencias de unión pueden contar varios puntos aunque visualmente parezcan un carácter.

¿Por qué se consideran iguales objetos escritos de forma distinta?

El orden de propiedades no cambia el valor de un objeto JSON. const, enum y uniqueItems usan igualdad estructural. El orden de elementos de un array sí sigue siendo significativo.

Herramientas relacionadas

Herramientas similares o complementarias a esta.

Herramientas similares

Comprueba una descripción de API en JSON o YAML sin subirla a un servidor.

DesarrolloNuevaUsar esta herramienta

Genera un JSON Schema desde un ejemplo JSON localmente en tu navegador.

DesarrolloUsar esta herramienta

Formatea, minimiza y valida un documento JSON para hacerlo más legible o compacto.

DesarrolloDestacadaUsar esta herramienta