使用ajv-keywords给jsonschema添加自定义关键字
JSON Schema 的关键字太少,有些默认的校验无法满足效果,需要自定义校验关键字,ajv-errors 提供一些常见的 validator 关键字
用法
var Ajv = require('ajv')
var ajv = new Ajv({ $data: true })
//添加所有的关键字
require('ajv-keywords')(ajv)
//只添加instanceof关键字
require('ajv-keywords')(ajv, 'instanceof')
//添加多个关键字
require('ajv-keywords')(ajv, ['typeof', 'instanceof'])
//只添加instanceof关键字,其他代码不添加(类似按需加载)
require('ajv-keywords/keywords/instanceof')(ajv)
关键字
number
string
支持标准
pattern
不支持的标志此关键字仅适用于字符串。如果数据不是字符串,则验证成功
formatmaximum、formatminimum、formatexclusivemaximum、formatexclusiveminimum
校验 format:datetime、time、date 类型 的范围
Json schema 是严格校验的,所以字符串中的空格也会影响校验结果
transform
可以在校验前改变字符串trim
: remove whitespace from start and endtrimLeft
: remove whitespace from starttrimRight
: remove whitespace from endtoLowerCase
: case string to all lower casetoUpperCase
: case string to all upper casetoEnumCase
: case string to match case in schema
arrays
对象组成的数组每个值必须是不同的
objects
对象中所有的都要满足
对象中只要有一个满足
对象中有且只有一个满足
对象中不存在 prohibited 中指定的属性
- 校验深层结构中某个属性具体的校验
- 校验数组(对象)深层结构中某个值是必须的
computer keywords
可用 if/then/else 代替
select/selectcases/selectdefault
select 查询某个值,匹配 selectcases 找那个值,并执行其中校验。匹配不到则校验 selectdefault
All types
设置默认值,并且可以扩展自定义函数。类似 uuid 等