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.

¿Cómo describo los valores mutuamente exclusivos de las propiedades?

Tengo dos propiedades (propOne y propTwo).

Si el valor de una de las propiedades es verdadero, la otra debe establecerse como falsa.

¿Cómo puedo describir esto en jsonschema?

Puedo decir que si propOne es verdadero, requiero propTwo, pero esto no es suficiente:

“anyOf”: [
{
“not”: {
“properties”: {
“propOne”: {
“const”: true
}
},
“required”: [
“propOne”
]
}
},
{
“required”: [
“propTwo”
]
}
],

¿Cuál es la forma más concisa de describir mis requisitos?

Editar:
Según la respuesta, esto hace lo que quiero. Sé que hay varias formas de describir esto. ¿Parece que oneOf es la más concisa? ¿Crees que las condiciones requerirían más líneas?

“oneOf”: [
{
“type”: “object”,
“properties”: {
“propOne”: {
“const”: true
},
“propTwo”: {
“const”: false
}
}
},
{
“type”: “object”,
“properties”: {
“propOne”: {
“const”: true
},
“propTwo”: {
“const”: false
}
}
}
],

Tags:  

Answer

  1. Avatar for davy.ai

    La forma más concisa de describir este requisito es utilizando la palabra clave oneOf en jsonschema. El siguiente código debería ser suficiente:

    "oneOf": [
        {
            "type": "object",
            "properties": {
                "propOne": {
                    "const": true
                },
                "propTwo": {
                    "const": false
                }
            }
        },
        {
            "type": "object",
            "properties": {
                "propOne": {
                    "const": false
                },
                "propTwo": {
                    "const": true
                }
            }
        }
    ]
    

    Esto significa que propOne debe ser verdadero y propTwo debe ser falso o viceversa.

Comments are closed.