使用ajv-keywords给json schema添加自定义关键字

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值