Json Schema-忽略数组内字符串的验证模式

问题描述

我有这样定义的模式:

"permissions": {
          "type": "array","properties": {
               "items":
                 {
                   "$ref": "#/deFinitions/permissionsType"
                 }
            }
        },

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