如何在 JSON 模式中将 dependentRequired 与相对引用一起使用

How to use dependentRequired with relative reference in JSON schema

我的应用程序中有以下 JSON 架构,我正在使用 NewtonSoft JSON schema validation 库根据我的架构验证用户 JSON。

我需要设置的规则是-

  1. 如果用户在 JSON 中设置 property2 那么 property3 也应该存在并且 subProperty2 也应该存在于 property3.
  2. 下面
  3. 如果用户没有设置 property2 则不需要 property3

我为此使用 dependentRequired 并使用 period(.) 进行相对引用,但这不适用于 NewtonSoft 包。我尝试了两种不同的方式,都没有预期的结果。

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "property1": {
      ...
    },
    "property2": {
      ...
    },
    "property3": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "subProperty1": {
          ...
        },
        "subProperty2": {
          ...
        },
      }
    }
  },
   "required": [
    "property1"
  ]
}

//尝试1

  "dependentRequired": {
    "property2": [ "property3.subProperty2" ]
  },

//尝试2

  "dependentRequired": {
    "property2": {
      "required": [ "property3" ],
      "property3": {
        "required": [ "subProperty2" ]
      }
    }
  } 

有人可以帮我解决这个问题吗?

JSON 架构不支持第一次尝试中使用的点符号。

第二次尝试是正确的想法,但由于您使用的是模式,因此需要使用dependentSchemas而不是dependentRequired。此外,您还缺少使该架构有效的 properties 关键字。

  "dependentSchemas": {
    "property2": {
      "required": [ "property3" ],
      "properties": {
        "property3": {
          "required": [ "subProperty2" ]
        }
      }
    }
  },