web-dev-qa-db-fra.com

Schéma JSON conditionnel: requis et non requis

J'essaie d'implémenter cette condition: si une propriété particulière existe, alors une autre propriété est requise; mais s'il n'existe pas, un autre n'est pas requis.

De plus, dans les schémas JSON, pouvons-nous utiliser pas dans les dépendances?

Voici un exemple de schéma

var schema = {
    "properties": {
        "smaller": {
            "type": "number"
        },
        "larger": { "type": "number" },
        "medium":{'type':'string'},
        "bulky":{'type':'string'}
    },
    require:['smaller','larger'],
    additionalProperties:false
};

Si "moyen" est présent, alors "volumineux" est requis. Sinon, "encombrant" n'est pas requis.

Ici, "non requis" signifie que si "moyen" n'existe pas, alors l'encombrant ne doit pas être présent.

6
h.ataie

si vous avez plusieurs propriétés qui dépendent des valeurs respectives, vous pouvez utiliser les dépendances de propriété.

{
  "type": "object",
  "properties": {
    "weight_1": {
        "type": "integer"
    },
    "weight_2": {
        "type": "integer"
    },
    "description_1": {
        "type": "string" 
    },
    "description_2": {
        "type": "string" 
    }
  },
  "allOf": [
    {
        "if": {
          "properties": {
            "weight_1": {
                "minimum": 10 
            }
          }
        },
        "then": {
          "dependencies": {
            "weight_1": ["description_1"]
          }
        }
    },
    {
        "if": {
          "properties": {
            "weight_2": {
                "minimum": 100
            }
          }
        },
        "then": {
          "dependencies": {
            "weight_2": ["description_2"]
          }
        }
    }
  ]
}
0
Brian Wong