Saltar al contenido
4all.tools

Valida JSON con un esquema JSON

Comprueba un documento JSON estricto con un subconjunto local y limitado de JSON Schema draft-07.

Espacio de trabajo de la herramienta

Validar un documento JSON con un esquema

Se necesita JavaScript para ejecutar esta herramienta de validación local.

Introduce un objeto JSON con el subconjunto admitido de draft-07.

0 / 100.000 unidades de código UTF-16

Introduce el documento JSON que se validará con el esquema.

0 / 250.000 unidades de código UTF-16

La validación se ejecuta localmente en tu navegador. Ninguna entrada se envía a un servidor.

Acciones de validación

Introduce un esquema y un documento JSON; después, elige Validar.

Keywords admitidas, referencias y límites

Acerca de este validador

Esta herramienta acepta esquemas objeto JSON que declaren http://json-schema.org/draft-07/schema#. Implementa un subconjunto de draft-07.

Keywords admitidas

$schema, title, description, type, properties, required, items, additionalProperties, enum, const, minimum, maximum, exclusiveMinimum, exclusiveMaximum, minLength, maxLength y pattern.

Keywords no admitidas

Las demás keywords se rechazan, incluidas $ref, definitions, format, allOf, anyOf, oneOf, not, dependencies y las condicionales.

Los patrones usan una gramática restringida: letras y dígitos ASCII, puntuación regex escapada, clases de caracteres simples, anclas de inicio o fin y como máximo un cuantificador ? o {mínimo,máximo} (máximo 32).

Los esquemas nunca se descargan. No se siguen referencias remotas como $ref y no están admitidas.

Límites de recursos

Esquema: 100.000 unidades de código UTF-16; profundidad del parser 60, 5.000 nodos, 1.000.000 unidades de trabajo del parser y 100 diagnósticos. El preflight permite 5.000 visitas estructurales, profundidad 40, 5.000 nombres, 50 patrones de hasta 128 unidades cada uno y 100 miembros por enum.

Documento: 250.000 unidades de código UTF-16; profundidad del parser 100, 25.000 nodos, 1.000.000 unidades de trabajo del parser y 100 diagnósticos. Las cadenas comprobadas con pattern admiten hasta 10.000 unidades de código.

La validación completa tiene 5.000.000 unidades de trabajo, 8.192 unidades de código variable por diagnóstico y un límite de 8 segundos. La interfaz no permite aumentar estos límites.

Valida un documento con un esquema

Introduce un objeto JSON Schema en Esquema JSON y el valor JSON que quieras comprobar en Documento JSON; después, elige Validar. Primero se analizan ambas entradas como JSON estricto, se comprueba el esquema completo y se evalúa el documento. Se muestra el primer error; esta primera versión no enumera todas las incompatibilidades. Un resultado satisfactorio indica que el documento cumple el subconjunto admitido por esta herramienta, no todas las funciones de draft-07.

Elige Cargar ejemplo para rellenar ambos editores con este par funcional. Puedes modificarlo; solo se valida al elegir Validar.

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "active": { "type": "boolean" }
  },
  "required": ["name"],
  "additionalProperties": false
}
{
  "name": "Ada",
  "active": true
}

Subconjunto admitido de draft-07

El esquema raíz debe ser un objeto JSON y declarar en $schema el valor exacto http://json-schema.org/draft-07/schema#. Se admiten estas keywords y formas:

  • $schema, title y description con valores de texto.
  • type como un tipo o como una lista no vacía y sin duplicados: null, boolean, object, array, number, integer o string.
  • properties como objeto cuyos valores son esquemas; required como lista de nombres de propiedades únicos; y additionalProperties como booleano o esquema.
  • items como un esquema. No se admiten listas de esquemas en items.
  • enum como lista no vacía de hasta 100 valores JSON y const como cualquier valor JSON.
  • minimum, maximum, exclusiveMinimum y exclusiveMaximum como números finitos.
  • minLength y maxLength como enteros no negativos. La longitud de texto se cuenta en puntos de código Unicode.
  • pattern como texto que use la gramática restringida descrita más abajo.

properties describe cómo se comprueba una propiedad si existe; no la hace obligatoria. Solo deben existir los nombres incluidos en required. Una propiedad ausente y otra cuyo valor es null son distintas: required comprueba presencia y type comprueba el valor. additionalProperties acepta, rechaza o comprueba otras propiedades; nunca las elimina ni las reescribe en el documento.

Keywords y patrones rechazados

Se rechaza cualquier keyword que no aparezca en la lista anterior, antes de validar el documento. Esto incluye $ref, incluso cuando apunta a una definición local, además de definitions, format, allOf, anyOf, oneOf, not, dependencies y las condicionales if, then y else. No se resuelven referencias ni se descarga un esquema o se consulta un servicio remoto.

Los patrones se limitan a letras y dígitos ASCII, puntuación de expresiones regulares escapada, clases de caracteres simples y ^ o $ solo al principio o al final. Cada patrón admite como máximo un cuantificador ? o uno acotado {mínimo,máximo}, donde el máximo es 32. Se rechazan otras funciones de las expresiones regulares. Un patrón admite hasta 128 unidades de código, y un texto del documento comprobado con patrón, hasta 10.000.

JSON estricto y precisión numérica

Ambos editores requieren JSON estricto. Los comentarios, las comas finales, las claves de objeto duplicadas y el contenido sobrante son errores. Los números que no se pueden representar de forma segura como números de JavaScript se rechazan y no producen un resultado de conformidad. Se valida el valor JSON analizado; una vez perdida la precisión, no se puede recuperar la escritura numérica original.

Límites de entrada y operación

El esquema admite hasta 100.000 unidades de código UTF-16. Su análisis se limita a profundidad 60, 5.000 nodos JSON, 1.000.000 unidades de trabajo del parser y 100 diagnósticos. El preflight del esquema permite 5.000 visitas estructurales, profundidad 40, 5.000 nombres entre properties y required, 50 patrones de hasta 128 unidades de código cada uno y 100 valores en cada enum.

El documento admite hasta 250.000 unidades de código UTF-16. Su análisis se limita a profundidad 100, 25.000 nodos JSON, 1.000.000 unidades de trabajo del parser y 100 diagnósticos. Los textos comprobados con pattern admiten hasta 10.000 unidades de código. La validación completa dispone de 5.000.000 unidades de trabajo, 8.192 unidades de código variable por diagnóstico y un límite de 8 segundos. Al alcanzar un límite, se detiene la validación sin declarar el documento válido o no conforme.

Procesamiento local

El análisis y la validación se ejecutan en un Worker local del navegador. Ninguna entrada se envía al servidor de la aplicación y no se descargan esquemas. El texto no se guarda en la URL, las cookies ni el almacenamiento del navegador. Al editar una entrada se borra el resultado anterior y se detiene el trabajo sobre el texto previo. Cancelar detiene una operación activa y conserva ambas entradas; Limpiar ambos las elimina explícitamente.