es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Esquema JSON con nested allOf/anyOf/oneOf no funciona

Intento validar este JSON con el siguiente esquema.

{
  "a": "1"
}

Esquema:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "allOf": [
    {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "a": {
              "type": "integer"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "b": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        }
      ]
    }
  ]
}

(Este es solo un ejemplo simplificado para demostrar el problema).

Se supone que la validación fallará (“a” debe ser entero, no cadena) pero el error no se detecta.
Pero si reemplazo allOf con oneOf o anyOf, falla como se espera.
También si reemplazo oneOf por anyOf en el esquema anidado.
¿Me falta algo o el validador está fallando?

EDICIÓN: Parece ser un error en el validador de IntelliJ IDEA. Funciona en python3-jsonschema, Java Everit, jsonschema.dev.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en json, validación, intellij-idea, schema y jsonschema, puedo decir que parece haber un error en el validador de IntelliJ IDEA. La validación debería fallar porque “a” debe ser un número entero, no una cadena, pero el error no se detecta al utilizar el esquema proporcionado con el JSON. Sin embargo, si reemplazas allOf con oneOf o anyOf, la validación falla como se espera. Además, si reemplazas oneOf con anyOf en el esquema anidado, la validación también falla como se espera. Por lo tanto, parece que el problema es específico del validador de IntelliJ IDEA. Otros validadores como python3-jsonschema, Java Everit y jsonschema.dev no muestran este error.

Comments are closed.