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

4

我有一个这样定义的架构:

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

并且权限类型:

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

我不确定为什么模式regex被忽略了。
1个回答

5

去掉 properties 关键字,它将按预期工作。

我不确定你在这里尝试使用 properties 关键字的目的。 properties 只适用于被验证实例是一个对象的情况。因为该实例是一个数组,所以 properties 会被忽略。如果该实例是一个对象,那么 properties 关键字将适用,但它会期望一个具有属性名称 "items" 的对象,该属性名称与 #/definitions/permissionsType 匹配。我认为那不是你的意思。我认为你想要一个所有项都匹配 #/definitions/permissionsType 的数组。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接