json-schema - 允许在必需的属性中使用 logical-OR
json-schema - allow for logical-OR in required properties
这个问题的替代标题是 "required property combinations"。
假设我正在使用 json-schema 像这样:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON schema for NLU (npm-link-up) library.",
"type": "object",
"additionalProperties": false,
"required": [
"list", "packages", "deps"
],
// ...
}
我想做的是,将 "list"、"packages"、"deps" 中的一项作为必需项。那是一个,但应该不超过一个。
所以它可能是这样的:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON schema for NLU (npm-link-up) library.",
"type": "object",
"additionalProperties": false,
"required": [
{
"min": 1,
"max": 1,
"selection": ["list", "packages", "deps"]
}
],
}
或
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON schema for NLU (npm-link-up) library.",
"type": "object",
"additionalProperties": false,
"required": [
{
"operator": "or",
"selection": ["list", "packages", "deps"]
}
],
}
这可能吗?
JSON 架构中有四个布尔组合器关键字:
allOf
- 和
anyOf
- 或者
oneOf
- XOR(异或)
not
- 不是
你想要的可以这样实现...
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON schema for NLU (npm-link-up) library.",
"type": "object",
"additionalProperties": false,
"oneOf": [
{ "required": ["list"] },
{ "required": ["packages"] },
{ "required": ["deps"] }
]
}
这个问题的替代标题是 "required property combinations"。
假设我正在使用 json-schema 像这样:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON schema for NLU (npm-link-up) library.",
"type": "object",
"additionalProperties": false,
"required": [
"list", "packages", "deps"
],
// ...
}
我想做的是,将 "list"、"packages"、"deps" 中的一项作为必需项。那是一个,但应该不超过一个。
所以它可能是这样的:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON schema for NLU (npm-link-up) library.",
"type": "object",
"additionalProperties": false,
"required": [
{
"min": 1,
"max": 1,
"selection": ["list", "packages", "deps"]
}
],
}
或
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON schema for NLU (npm-link-up) library.",
"type": "object",
"additionalProperties": false,
"required": [
{
"operator": "or",
"selection": ["list", "packages", "deps"]
}
],
}
这可能吗?
JSON 架构中有四个布尔组合器关键字:
allOf
- 和anyOf
- 或者oneOf
- XOR(异或)not
- 不是
你想要的可以这样实现...
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON schema for NLU (npm-link-up) library.",
"type": "object",
"additionalProperties": false,
"oneOf": [
{ "required": ["list"] },
{ "required": ["packages"] },
{ "required": ["deps"] }
]
}