根据另一个对象的键的值有条件地要求JSON模式

uhry853o  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个JSON对象作为blow:

{
  "a": {
    "key1": "value1",
    "key2": true
  },
  "b": {
    "key3": "value3",
    "key4": "value4" // make key4 required if the value of key2 is true, otherwise it should be optional
  }
}

我需要的是,如果key2的值为true,则key4是必需的,否则它应该是可选的。我知道JSON schema support optional required based on the value of keys within the same object。但在这种情况下,我需要基于来自另一个对象的键的值。
.

5lhxktic

5lhxktic1#

这与平面结构的工作方式相同。ifthen关键字只是应用于示例的模式。因此,如果您想要定义嵌套条件或嵌套约束,则只需定义一个表达这些约束的模式。

{
  "if": {
    "properties": {
      "a": {
        "properties": {
          "key2": { "const": true }
        },
        "required": ["key2"]
      }
    },
    "required": ["a"]
  },
  "then": {
    "properties": {
      "b": { "required": ["key4"] }
    }
  }
}

相关问题