JSON模式,有条件的依赖性,是否存在财产



我有此架构要求,如果不存在a和b,则必须是c

例如:

{
  "group1": {
    "a": 10
  },
  "group2": {
    "group3": {
      "b": 30
    }
  },
  "group4": {
    "c": 20
  }
}

如果存在a,则bc不应在JSON中。如果存在bc,则a不应在JSON中。

我可以看到,在V6 JSON Schema规范中,关键字switch可以帮助解决此要求,但无法使其正常工作。

使用当前规格?

是否可能进行此架构验证

草稿-06是当前规格,但尚无条件。Draft-07具有IF/then/else/else使用:

{
  "if": {"required": ["a"]},
  "then": {"not": {"$ref": "#/definitions/bc"}},
  "else": {"$ref": "#/definitions/bc"},
  "definitions": {
    "bc": {
      "anyOf": [
        {"required": ["b"]},
        {"required": ["c"]}
      ]
    }
  }
}

当前/then/then/the/else在AJV中使用ajv-keywords支持。

任何有条件的条件都可以不用/then/then/then/then/then使用关键字,aLLOF而不是:

{
  "anyOf": [
    {"allOf": [ifSchema, thenSchema]},
    {"allOf": [{"not": ifSchema}, elseSchema]}
  ]
}

最新更新