JSON-模式排除属性(与必需属性相反)
JSON-schema exclude properties (opposite to required properties)
在 JSON-schema 中,可以 require 对象中的某些键,请参阅此示例,取自 json schema docs:
{
"type": "object",
"properties": {
"name": { "type": "string" },
"email": { "type": "string" },
"address": { "type": "string" },
"telephone": { "type": "string" }
},
"required": ["name", "email"]
}
我需要相反的东西:有没有办法禁止或防止某个键出现在对象中?具体来说,我想防止用户在对象中使用空键:
{
"": "some string value"
}
您可以通过以下方式按名称排除某些键:
{
"not": {
"anyOf": [
{ "required": [ "property1" ] },
{ "required": [ "property2" ] },
{ "required": [ "property3" ] },
...
]
}
https://json-schema.org/understanding-json-schema/reference/combining.html
除了使用 not
语法排除键(参见 Ether 的回答)之外,还可以使用 property-names
.
来实现目标
在以下示例中,所有键都必须映射到字符串 URI。我们还排除了所有非字母数字(通过 pattern
)或没有特定长度(通过 minLength
)的键。除此之外,我们对密钥没有任何限制。
"SomeKeyToBeValidated": {
"type": "object",
"properties": { },
"propertyNames": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9]*$"
},
"additionalProperties": {
"type": "string",
"format": "uri"
}
}
在 JSON-schema 中,可以 require 对象中的某些键,请参阅此示例,取自 json schema docs:
{
"type": "object",
"properties": {
"name": { "type": "string" },
"email": { "type": "string" },
"address": { "type": "string" },
"telephone": { "type": "string" }
},
"required": ["name", "email"]
}
我需要相反的东西:有没有办法禁止或防止某个键出现在对象中?具体来说,我想防止用户在对象中使用空键:
{
"": "some string value"
}
您可以通过以下方式按名称排除某些键:
{
"not": {
"anyOf": [
{ "required": [ "property1" ] },
{ "required": [ "property2" ] },
{ "required": [ "property3" ] },
...
]
}
https://json-schema.org/understanding-json-schema/reference/combining.html
除了使用 not
语法排除键(参见 Ether 的回答)之外,还可以使用 property-names
.
在以下示例中,所有键都必须映射到字符串 URI。我们还排除了所有非字母数字(通过 pattern
)或没有特定长度(通过 minLength
)的键。除此之外,我们对密钥没有任何限制。
"SomeKeyToBeValidated": {
"type": "object",
"properties": { },
"propertyNames": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9]*$"
},
"additionalProperties": {
"type": "string",
"format": "uri"
}
}