根据另一个文件的属性有条件地应用子模式

时间:2020-01-14 12:56:53

标签: json validation conditional-statements schema jsonschema

json模式是否允许基于另一个文件的属性值进行条件子模式设置?

示例:

Jsons:

another.json

{
  "honey": "honey"
}

main.json

{
  "hello": "abc"
}

架构

{
  "type": "object",
  "properties": {
    "hello": {
      "type": "string"
    }
  },
  "required": ["hello"],
  "if": {
    "properties": {
      "another.json#/honey": {       -->> is this possible
        "const": "honey"
      }
    }
  },
  "then": {
    "properties": {
      "hi": {
        "type": "string"
      }
    },
    "required": ["hi"]
  }
}

main.json应该通过验证失败,并尖叫“ hi”是必需的,因为another.json具有“ honey”作为值。

现在,将another.json更改为

{
  "honey": "not_honey"
}

应通过对main.json的验证

问题是

1 个答案:

答案 0 :(得分:0)

不。 JSON Schema没有文件的概念,只有“一个JSON实例”,一次只能验证其中一个。您需要以某种方式自己组合它们。