使用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)

关键字

  1. typeof

    基于 js 的 typeof 实现

  2. instaceof

    基于 js 的 instaceof 实现

number

string

  • regexp

    • 支持标准pattern不支持的标志

    • 此关键字仅适用于字符串。如果数据不是字符串,则验证成功

  • formatmaximum、formatminimum、formatexclusivemaximum、formatexclusiveminimum

    校验 format:datetime、time、date 类型 的范围

  • transform

    Json schema 是严格校验的,所以字符串中的空格也会影响校验结果

    transform可以在校验前改变字符串

    • trim: remove whitespace from start and end
    • trimLeft: remove whitespace from start
    • trimRight: remove whitespace from end
    • toLowerCase: case string to all lower case
    • toUpperCase: case string to all upper case
    • toEnumCase: case string to match case in schema

arrays

objects

computer keywords

All types

  • dynamicDefaults

    设置默认值,并且可以扩展自定义函数。类似 uuid 等

参考

  1. ajv-keywords readme