additionalProperties中是否需要添加dependentSchemas 属性

Should dependentSchemas property need to be added in additionalProperties

我正在尝试编写一个模式,如果 属性 A 存在,那么 属性 B 或 C 也应该使用 dependencyschema 构造,在我的模式中,我已关闭任何其他属性。

{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "$id": "PropertiesSchema.json",
  "type": "object",
  "properties": {
    "A": { "type": "boolean" }
  },
  "additionalProperties": false,
  "dependentSchemas": {
    "A": {
      "anyOf": [
        { "required": [ "B" ] },
        { "required": [ "C" ] }
      ],
      "properties": {
        "B": { "type": "boolean" },
        "C": { "type": "boolean" }
      }
    }
  }
}

但由于 additionalProperties 结构

,目前以下输入失败

{“A”:正确,“B”:错误}或{“A”:正确,“C”:错误}

那么是否有可能在关闭 additionalProperties 时允许 dependentSchemas 属性?

因此有效输入应该是

{“A”:正确,“B”:错误}或{“A”:正确,“C”:错误}

但对于任何其他 属性 说 D,它应该失败-

{ “A”:正确,“D”:错误 }

additionalProperties 只能考虑同一架构对象级别的 properties(和 patternProperties)。

如果将其更改为 unevaluatedProperties,您会发现它有效。

unevaluatedProperties可以“看穿”涂抹关键词,比如dependentSchemas。必须等待其他关键字先解析,最后解析。