如何在 json 模式中包含对键和值的验证
How to include validations for key as well as value in a json schema
我需要为 属性 以及 json 架构中的值添加验证。
我尝试使用以下架构,但 none 的验证有效:
{
"$schema": "http://json-schema.org/draft-06/schema#",
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"add": {
"type": "object",
"patternProperties": {
"^VOF979[0-9]{11}-NDG[0-9]{2}$": {
"description": "Some description",
"type": "string",
"maxLength": 2
}
}
}
}
}
我使用了以下 json 数据并且所有验证都通过了,尽管键和值都是错误的:
{
"add": {"VOF98999990005235-NDG01": "121"}
}
不允许附加属性保持严格验证
{
"$schema": "http://json-schema.org/draft-06/schema#",
"type": "object",
"properties": {
"add": {
"type": "object",
"patternProperties": {
"^VOF979[0-9]{11}-NDG[0-9]{2}$": {
"description": "Some description",
"type": "string",
"maxLength": 2
}
},
"additionalProperties": false // This One
}
},
"additionalProperties": false,
"minProperties": 1
}
JSON 架构是基于约束的。
patternProperties
根据键匹配(在本例中为正则表达式匹配)将其值架构应用于实例位置。
它不禁止对象中的附加键。
如果你想阻止额外的键,你需要这样指定。
为此,您需要 "additionalProperties": false
。
我需要为 属性 以及 json 架构中的值添加验证。
我尝试使用以下架构,但 none 的验证有效:
{
"$schema": "http://json-schema.org/draft-06/schema#",
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"add": {
"type": "object",
"patternProperties": {
"^VOF979[0-9]{11}-NDG[0-9]{2}$": {
"description": "Some description",
"type": "string",
"maxLength": 2
}
}
}
}
}
我使用了以下 json 数据并且所有验证都通过了,尽管键和值都是错误的:
{
"add": {"VOF98999990005235-NDG01": "121"}
}
不允许附加属性保持严格验证
{
"$schema": "http://json-schema.org/draft-06/schema#",
"type": "object",
"properties": {
"add": {
"type": "object",
"patternProperties": {
"^VOF979[0-9]{11}-NDG[0-9]{2}$": {
"description": "Some description",
"type": "string",
"maxLength": 2
}
},
"additionalProperties": false // This One
}
},
"additionalProperties": false,
"minProperties": 1
}
JSON 架构是基于约束的。
patternProperties
根据键匹配(在本例中为正则表达式匹配)将其值架构应用于实例位置。
它不禁止对象中的附加键。
如果你想阻止额外的键,你需要这样指定。
为此,您需要 "additionalProperties": false
。