高级json模式每个属性有多个规则

高级json模式每个属性有多个规则,json,node.js,jsonschema,Json,Node.js,Jsonschema,我想知道你是否可以为一个属性设置多个规则。所有的例子似乎都表明你不能 所以我想要一些类似于: "properties": { "track": { "type": "string", "pattern": "(exclusive)" }, "track": { "type": "string", "pattern": "(featuring)" } } 我知道在这个例子中要做的最明显的事情是让模式具有(独占)|(特色),但我想我想知道哪个规则失败了。同样

我想知道你是否可以为一个属性设置多个规则。所有的例子似乎都表明你不能

所以我想要一些类似于:

"properties": {
  "track": {
   "type": "string",
   "pattern": "(exclusive)"
  },
  "track": {
   "type": "string",
   "pattern": "(featuring)"
  }
}

我知道在这个例子中要做的最明显的事情是让模式具有
(独占)|(特色)
,但我想我想知道哪个规则失败了。同样,我以后可能需要更复杂的模式,这些模式可能无法通过

解决。您可以将模式与
allOf
anyOf
oneOf
关键字组合。这些关键字中的每一个都接受一组模式,并执行它所说的操作<如果所有架构都有效,则code>allOf有效<如果任何架构有效,则代码>任意都有效<如果恰好有一个架构有效,则code>oneOf有效

这里有一种解决问题的方法

{
  "type": "object",
  "properties": {
    "track": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "(exclusive)"
        },
        {
          "type": "string",
          "pattern": "(featuring)"
        }
      ]
    }
  }
}

您可以将模式与
allOf
anyOf
oneOf
关键字组合。这些关键字中的每一个都接受一组模式,并执行它所说的操作<如果所有架构都有效,则code>allOf有效<如果任何架构有效,则代码>任意都有效<如果恰好有一个架构有效,则code>oneOf有效

这里有一种解决问题的方法

{
  "type": "object",
  "properties": {
    "track": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "(exclusive)"
        },
        {
          "type": "string",
          "pattern": "(featuring)"
        }
      ]
    }
  }
}

Oha,不错的一个,可能比我的字典解决方案列表(取决于上下文)更方便。Oha,不错的一个,可能比我的字典解决方案列表(取决于上下文)更方便。