【发布时间】:2021-04-27 14:32:37
【问题描述】:
我有一个如下所示的 JSON:
{
"name": "Jane",
"company_name": "BrandNewStartup",
"designation": "DesignLead"
}
name 元素也可以单独出现在 JSON 中,所以下面的 JSON 也是有效的。
{
"name": "Jane"
}
但是如果name 缺失,company_name 和designation 就不能出现。所以下面的 JSON 应该是无效的:
{
"company_name": "BrandNewStartup",
"designation": "DesignLead"
}
我尝试了以下规则:
"oneOf": [
{
"required": [
"name",
"company_name",
"designation"
]
},
{
"required": [
"name"
]
}
]
但这似乎不起作用(例如this validation library 引发错误,JSON 应该只对一种模式有效,但对所有模式都有效)。
如果我将其更改为 anyOf,则包含所有 3 个字段的第一个 JSON 可以正常工作,但是当 name 单独出现时,会引发错误,指出缺少 company_name designation 字段。
如何定义这条规则?
【问题讨论】:
标签: json jsonschema json-schema-validator