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

  • range和exclusiveRange

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

  • 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等

参考

  1. ajv-keywords readme

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

  1. json schema实际运用

    一.背景 根据实际需求,发现前后端都需要对数据进行校验,且校验字段较多.为避免在代码中加入繁琐的判断,且能前后端保持统一标准,我们使用JSON schema规范来进行数据的校验. 二.JSON Sch ...

  2. 走近 JSON Schema

    JSON Schema 用于描述 JSON 数据的声明性格式.比如表示一个人的信息 的 JSON: {"first_name": "George"," ...

  3. 使用ajv校验json schema

    使用ajv-errors生成json-schema错误信息 ajv-errors给Json-schema添加了一个errorMessage关键字,通过这个关键字来输出错误信息 const Ajv = ...

  4. json schema 关键字速查

    相关文章: [1] Understanding JSON Schema [2] Json Schema 快速入门 [3] Json Schema简介 1 引言 1.1 背景 json格式中提供如下A( ...

  5. json schema如何约束为小数_如何使用jsonschema进行接口响应断言

    一,JSONSchema的概念 JSONSchema是一种用来描述JSON数据的一种JSON数据结构.JSON Schema也有版本,目前的版本有 Draft 7,Draft 6,Draft 4 和D ...

  6. Json Schema快速入门

    Json Schema快速入门 JSON 模式是一种基于 JSON 格式定义 JSON 数据结构的规范.它被写在 IETF 草案下并于 2011 年到期.JSON 模式: 描述现有数据格式. 干净的人 ...

  7. JSON Schema

    XML有XML Schema,有Schema的好处就是可以校验文件是否符合规范,在代码提示上也会有许多好处.JSON Schema用于JSON验证. 如果说JSON是盛放数据的袋子,那么JSON Sc ...

  8. JSON Schema定义 +Networknt validator格式校验

    一.介绍 JSON Schema是基于JSON的格式的规范,用于定义JSON数据的结构. 官网:https://ajv.js.org/json-schema.html 在线验证:https://www ...

  9. Vue基于JSON Schema生成表单和数据校验

    基于 Vue.js.JSON Schema 和 ElementUi 快速生成表单,支持自定义组件,支持自定义错误提示配置和校验规则... 源码:vue-json-schema-form github ...

最新文章

  1. Python操作mysql数据库查询操作时提示“unread-result-found”
  2. PaaS Innovation 2017开幕在即,共襄技术演进与商业碰撞盛宴
  3. Android的下载,编译, 运行
  4. LintCode 1671. 玩游戏(贪心、难)
  5. 产业链加入爆料行列!2019年新iPhone:外形无变化 后置摄像头升级
  6. CHM文件出现的常见错误及解决办法
  7. [No000014B]Office-PPT设置默认打开视图
  8. VFP基础教程 2.8 使用命令建立和操作索引文件
  9. Ubuntu20.04+i3wm折腾笔记
  10. BZOJ1577: [Usaco2009 Feb]庙会捷运Fair Shuttle 贪心+线段树
  11. 怎么清理计算机里的音乐,如何清理电脑中的重复的音乐
  12. 安徽师范大学计算机与信息学院研究生导师,安徽师范大学数学计算机科学学院导师介绍:郭要红...
  13. 负载均衡(LB)与高可用(HA)的简单概念
  14. gradient_accumulation_steps --梯度累加理解
  15. 大众点评 与 美团 与饿了么
  16. pycharm编辑器如何用鼠标滚轮随时放大缩小代码
  17. 制作双足机器人用易拉罐_小小创客 | 用易拉罐做一台平衡车,跑起来太炫酷了吧...
  18. VS错误:未能加载文件或程序集“NPOI, Version=2.3.0.0, Culture=neutral, PublicKeyToken...
  19. 基于Babel对JS代码进行混淆与还原操作
  20. 代码为什么那么乱! 换种方法学面向对象

热门文章

  1. mybatis查询结果封装成map类型
  2. ElementPlus的Collapse 折叠面板问题
  3. 跑步戴哪款无线耳机好、跑步蓝牙耳机排名榜
  4. 今天你买到票了吗?——从铁道部12306.cn网站漫谈电子商务网站的“海量事务高速处理”系统
  5. 你是否愿意相信命运?
  6. 局域网共享打印机需要开启的服务
  7. mysql 计算 两个字段 之差_MYSQL计算两个字段日期差
  8. java的entryset_EntrySet的用法
  9. Meximization
  10. 去除RMVB的内嵌字幕方法