【发布时间】:2021-04-14 13:24:47
【问题描述】:
我试图了解单个 JSON 模式在不同验证器中使用时的行为方式。一些验证器定义自定义关键字。例如 ajv 验证器 ajv-keywords 包定义了一个 prohibited 关键字,它不是 JSON Schema 标准的一部分。另一方面,JSON Schema 定义了 required 关键字,这似乎与 prohibited 截然相反。 JSON Schema 还定义了一个 oneOf 组合子,可用于验证输入是否应匹配多个架构定义中的一个且仅匹配一个。
考虑以下架构示例。通过阅读 json 模式规范,我得到的印象是示例 json 模式在 ajv 中使用时应该验证任何 json 对象。但是,根据未知关键字规则,验证器应该忽略它们不支持的任何关键字。所以,我想另一个验证器会忽略自定义 prohibited 关键字,导致架构拒绝具有属性 foo 的输入。这是正确的还是我没有阅读 json 架构规范?
{
"oneOf": [
{
"type": "object",
"required": ["foo"]
},
{
"type": "object",
"prohibited": ["foo"]
}
]
}
【问题讨论】:
标签: jsonschema