Json 模式 - 忽略数组中字符串的验证模式
Json Schema - validate pattern for string inside an array is ignored
我有一个这样定义的模式:
"permissions": {
"type": "array",
"properties": {
"items":
{
"$ref": "#/definitions/permissionsType"
}
}
},
和权限类型:
"permissionsType": {
"type": "string",
"pattern": "^[a-zA-Z0-9]+(:[a-zA-Z0-9][a-zA-Z0-9-]+)+$"
},
...
我不确定为什么忽略模式正则表达式。
删除 properties
关键字,它将按预期工作。
我不确定您要在此处使用 properties
关键字做什么。 properties
仅在被验证的实例是对象时适用。因为实例是一个数组,所以 properties
被忽略了。如果该实例是一个对象,则 properties
关键字将适用,但它需要一个具有 属性 名称 "items"
且匹配 #/definitions/permissionsType
的对象。我不认为那是你的意思。我想你想要一个数组,其项目都匹配 #/definitions/permissionsType
.
"permissions": {
"type": "array",
"items": { "$ref": "#/definitions/permissionsType" }
}
我有一个这样定义的模式:
"permissions": {
"type": "array",
"properties": {
"items":
{
"$ref": "#/definitions/permissionsType"
}
}
},
和权限类型:
"permissionsType": {
"type": "string",
"pattern": "^[a-zA-Z0-9]+(:[a-zA-Z0-9][a-zA-Z0-9-]+)+$"
},
...
我不确定为什么忽略模式正则表达式。
删除 properties
关键字,它将按预期工作。
我不确定您要在此处使用 properties
关键字做什么。 properties
仅在被验证的实例是对象时适用。因为实例是一个数组,所以 properties
被忽略了。如果该实例是一个对象,则 properties
关键字将适用,但它需要一个具有 属性 名称 "items"
且匹配 #/definitions/permissionsType
的对象。我不认为那是你的意思。我想你想要一个数组,其项目都匹配 #/definitions/permissionsType
.
"permissions": {
"type": "array",
"items": { "$ref": "#/definitions/permissionsType" }
}