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" }
}