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等