首页 > 解决方案 > Json Schema - 数组内字符串的验证模式被忽略

问题描述

我有一个这样定义的模式:

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

和权限类型:

"permissionsType": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9]+(:[a-zA-Z0-9][a-zA-Z0-9-]+)+$"
    },

...

我不确定为什么模式正则表达式被忽略。

标签: jsonjsonschema

解决方案


删除properties关键字,它将按预期工作。

我不确定您要对properties此处的关键字做什么。properties仅当正在验证的实例是对象时才适用。因为实例是一个数组,properties所以被忽略。如果该实例是一个对象,则该properties关键字将适用,但它需要一个属性名称"items"与 匹配的对象#/definitions/permissionsType。我不认为那是你的意思。我认为您想要一个其项目全部匹配的数组 #/definitions/permissionsType

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

推荐阅读