使用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);
关键字
typeof
基于js的typeof实现
instaceof
基于js的instaceof实现
number
- range和exclusiveRange
string
regexp
支持标准
pattern
不支持的标志此关键字仅适用于字符串。如果数据不是字符串,则验证成功
formatmaximum、formatminimum、formatexclusivemaximum、formatexclusiveminimum
校验format:datetime、time、date类型 的范围
transform
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
uniqueitemproperties
对象组成的数组每个值必须是不同的
objects
allRequired
对象中所有的都要满足
anyRequired
对象中只要有一个满足
oneRequired
对象中有且只有一个满足
prohibited
对象中不存在prohibited中指定的属性
deepPropperties
- 校验深层结构中某个属性具体的校验
deepRequired
- 校验数组(对象)深层结构中某个值是必须的
computer keywords
switch
可用if/then/else代替
select/selectcases/selectdefault
select查询某个值,匹配selectcases找那个值,并执行其中校验。匹配不到则校验selectdefault
All types
dynamicDefaults
设置默认值,并且可以扩展自定义函数。类似uuid等
参考
- ajv-keywords readme
使用ajv-keywords给json schema添加自定义关键字相关推荐
- json schema实际运用
一.背景 根据实际需求,发现前后端都需要对数据进行校验,且校验字段较多.为避免在代码中加入繁琐的判断,且能前后端保持统一标准,我们使用JSON schema规范来进行数据的校验. 二.JSON Sch ...
- 走近 JSON Schema
JSON Schema 用于描述 JSON 数据的声明性格式.比如表示一个人的信息 的 JSON: {"first_name": "George"," ...
- 使用ajv校验json schema
使用ajv-errors生成json-schema错误信息 ajv-errors给Json-schema添加了一个errorMessage关键字,通过这个关键字来输出错误信息 const Ajv = ...
- json schema 关键字速查
相关文章: [1] Understanding JSON Schema [2] Json Schema 快速入门 [3] Json Schema简介 1 引言 1.1 背景 json格式中提供如下A( ...
- json schema如何约束为小数_如何使用jsonschema进行接口响应断言
一,JSONSchema的概念 JSONSchema是一种用来描述JSON数据的一种JSON数据结构.JSON Schema也有版本,目前的版本有 Draft 7,Draft 6,Draft 4 和D ...
- Json Schema快速入门
Json Schema快速入门 JSON 模式是一种基于 JSON 格式定义 JSON 数据结构的规范.它被写在 IETF 草案下并于 2011 年到期.JSON 模式: 描述现有数据格式. 干净的人 ...
- JSON Schema
XML有XML Schema,有Schema的好处就是可以校验文件是否符合规范,在代码提示上也会有许多好处.JSON Schema用于JSON验证. 如果说JSON是盛放数据的袋子,那么JSON Sc ...
- JSON Schema定义 +Networknt validator格式校验
一.介绍 JSON Schema是基于JSON的格式的规范,用于定义JSON数据的结构. 官网:https://ajv.js.org/json-schema.html 在线验证:https://www ...
- Vue基于JSON Schema生成表单和数据校验
基于 Vue.js.JSON Schema 和 ElementUi 快速生成表单,支持自定义组件,支持自定义错误提示配置和校验规则... 源码:vue-json-schema-form github ...
最新文章
- Python操作mysql数据库查询操作时提示“unread-result-found”
- PaaS Innovation 2017开幕在即,共襄技术演进与商业碰撞盛宴
- Android的下载,编译, 运行
- LintCode 1671. 玩游戏(贪心、难)
- 产业链加入爆料行列!2019年新iPhone:外形无变化 后置摄像头升级
- CHM文件出现的常见错误及解决办法
- [No000014B]Office-PPT设置默认打开视图
- VFP基础教程 2.8 使用命令建立和操作索引文件
- Ubuntu20.04+i3wm折腾笔记
- BZOJ1577: [Usaco2009 Feb]庙会捷运Fair Shuttle 贪心+线段树
- 怎么清理计算机里的音乐,如何清理电脑中的重复的音乐
- 安徽师范大学计算机与信息学院研究生导师,安徽师范大学数学计算机科学学院导师介绍:郭要红...
- 负载均衡(LB)与高可用(HA)的简单概念
- gradient_accumulation_steps --梯度累加理解
- 大众点评 与 美团 与饿了么
- pycharm编辑器如何用鼠标滚轮随时放大缩小代码
- 制作双足机器人用易拉罐_小小创客 | 用易拉罐做一台平衡车,跑起来太炫酷了吧...
- VS错误:未能加载文件或程序集“NPOI, Version=2.3.0.0, Culture=neutral, PublicKeyToken...
- 基于Babel对JS代码进行混淆与还原操作
- 代码为什么那么乱! 换种方法学面向对象