使用AJV设置类型的默认规则

时间:2017-07-26 00:18:16

标签: validation jsonschema ajv

我试图找出如何全局说所有数组必须长度为1而不必使用minItems:1我在模式的每个位置指定一个数组。我正在考虑创建一个自定义类型,这是一个选项,但我觉得应该有更好的方法?

另一个全局限制是不允许任何空字符串。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您永远不能更改关键字的行为(全局或其他方式)。您最好的办法是创建一个包含特殊规则的文件。

global.js

{
  "definitions": {
    "non-empty-array": {
      "type": "array",
      "minItems": 1
    }
  }
}

然后,只要您想使用这些特殊规则,就可以引用此文件。

example.js

{
  "type": "object",
  "properties": {
    "a": {
      "allOf": [{ "$ref": "/global.js#/definitions/non-empty-array" }],
      "items": { "type": "string" }
    },
    "b": {
      "allOf": [{ "$ref": "global.js#/definitions/non-empty-array" }],
      "items": { "type": "integer" }
    }
  }
}