<img align="right" alt="Ajv logo" width="160" src="http://epoberezkin.github.io/ajv/images/ajv_logo.png">
# Ajv: Another JSON Schema Validator
The fastest JSON Schema validator for node.js and browser with draft 6 support.
[![Build Status](https://travis-ci.org/epoberezkin/ajv.svg?branch=master)](https://travis-ci.org/epoberezkin/ajv)
[![npm version](https://badge.fury.io/js/ajv.svg)](https://www.npmjs.com/package/ajv)
[![npm downloads](https://img.shields.io/npm/dm/ajv.svg)](https://www.npmjs.com/package/ajv)
[![Code Climate](https://codeclimate.com/github/epoberezkin/ajv/badges/gpa.svg)](https://codeclimate.com/github/epoberezkin/ajv)
[![Coverage Status](https://coveralls.io/repos/epoberezkin/ajv/badge.svg?branch=master&service=github)](https://coveralls.io/github/epoberezkin/ajv?branch=master)
[![Greenkeeper badge](https://badges.greenkeeper.io/epoberezkin/ajv.svg)](https://greenkeeper.io/)
[![Gitter](https://img.shields.io/gitter/room/ajv-validator/ajv.svg)](https://gitter.im/ajv-validator/ajv)
## Using version 5
[JSON Schema draft-06](https://trac.tools.ietf.org/html/draft-wright-json-schema-validation-01) is published.
[Ajv version 5.0.0](https://github.com/epoberezkin/ajv/releases/tag/5.0.0) that supports draft-06 is released. It may require either migrating your schemas or updating your code (to continue using draft-04 and v5 schemas).
__Please note__: To use Ajv with draft-04 schemas you need to explicitly add meta-schema to the validator instance:
```javascript
ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-04.json'));
```
## Contents
- [Performance](#performance)
- [Features](#features)
- [Getting started](#getting-started)
- [Frequently Asked Questions](https://github.com/epoberezkin/ajv/blob/master/FAQ.md)
- [Using in browser](#using-in-browser)
- [Command line interface](#command-line-interface)
- Validation
- [Keywords](#validation-keywords)
- [Formats](#formats)
- [$data reference](#data-reference)
- NEW: [$merge and $patch keywords](#merge-and-patch-keywords)
- [Defining custom keywords](#defining-custom-keywords)
- [Asynchronous schema compilation](#asynchronous-schema-compilation)
- [Asynchronous validation](#asynchronous-validation)
- Modifying data during validation
- [Filtering data](#filtering-data)
- [Assigning defaults](#assigning-defaults)
- [Coercing data types](#coercing-data-types)
- API
- [Methods](#api)
- [Options](#options)
- [Validation errors](#validation-errors)
- [Related packages](#related-packages)
- [Packages using Ajv](#some-packages-using-ajv)
- [Tests, Contributing, History, License](#tests)
## Performance
Ajv generates code using [doT templates](https://github.com/olado/doT) to turn JSON schemas into super-fast validation functions that are efficient for v8 optimization.
Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks:
- [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark) - 50% faster than the second place
- [jsck benchmark](https://github.com/pandastrike/jsck#benchmarks) - 20-190% faster
- [z-schema benchmark](https://rawgit.com/zaggino/z-schema/master/benchmark/results.html)
- [themis benchmark](https://cdn.rawgit.com/playlyfe/themis/master/benchmark/results.html)
Performace of different validators by [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark):
[![performance](https://chart.googleapis.com/chart?chxt=x,y&cht=bhs&chco=76A4FB&chls=2.0&chbh=32,4,1&chs=600x416&chxl=-1:%7Cajv%7Cis-my-json-valid%7Cjsen%7Cschemasaurus%7Cthemis%7Cz-schema%7Cjsck%7Cjsonschema%7Cskeemas%7Ctv4%7Cjayschema&chd=t:100,68,61,22.8,17.6,6.6,2.7,0.9,0.7,0.4,0.1)](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance)
## Features
- Ajv implements full JSON Schema [draft 6](http://json-schema.org/) and draft 4 standards:
- all validation keywords (see [JSON Schema validation keywords](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md))
- full support of remote refs (remote schemas have to be added with `addSchema` or compiled to be available)
- support of circular references between schemas
- correct string lengths for strings with unicode pairs (can be turned off)
- [formats](#formats) defined by JSON Schema draft 4 standard and custom formats (can be turned off)
- [validates schemas against meta-schema](#api-validateschema)
- supports [browsers](#using-in-browser) and nodejs 0.10-7.x
- [asynchronous loading](#asynchronous-schema-compilation) of referenced schemas during compilation
- "All errors" validation mode with [option allErrors](#options)
- [error messages with parameters](#validation-errors) describing error reasons to allow creating custom error messages
- i18n error messages support with [ajv-i18n](https://github.com/epoberezkin/ajv-i18n) package
- [filtering data](#filtering-data) from additional properties
- [assigning defaults](#assigning-defaults) to missing properties and items
- [coercing data](#coercing-data-types) to the types specified in `type` keywords
- [custom keywords](#defining-custom-keywords)
- draft-6 keywords `const`, `contains` and `propertyNames`
- draft-6 boolean schemas (`true`/`false` as a schema to always pass/fail).
- keywords `switch`, `patternRequired`, `formatMaximum` / `formatMinimum` and `formatExclusiveMaximum` / `formatExclusiveMinimum` from [JSON-schema extension proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) with [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) package
- [$data reference](#data-reference) to use values from the validated data as values for the schema keywords
- [asynchronous validation](#asynchronous-validation) of custom formats and keywords
Currently Ajv is the only validator that passes all the tests from [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite) (according to [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark), apart from the test that requires that `1.0` is not an integer that is impossible to satisfy in JavaScript).
## Install
```
npm install ajv
```
## <a name="usage"></a>Getting started
Try it in the node REPL: https://tonicdev.com/npm/ajv
The fastest validation call:
```javascript
var Ajv = require('ajv');
var ajv = new Ajv(); // options can be passed, e.g. {allErrors: true}
var validate = ajv.compile(schema);
var valid = validate(data);
if (!valid) console.log(validate.errors);
```
or with less code
```javascript
// ...
var valid = ajv.validate(schema, data);
if (!valid) console.log(ajv.errors);
// ...
```
or
```javascript
// ...
ajv.addSchema(schema, 'mySchema');
var valid = ajv.validate('mySchema', data);
if (!valid) console.log(ajv.errorsText());
// ...
```
See [API](#api) and [Options](#options) for more details.
Ajv compiles schemas to functions and caches them in all cases (using schema serialized with [json-stable-stringify](https://github.com/substack/json-stable-stringify) or a custom function as a key), so that the next time the same schema is used (not necessarily the same object instance) it won't be compiled again.
The best performance is achieved when using compiled functions returned by `compile` or `getSchema` methods (there is no additional function call).
__Please note__: every time validation function or `ajv.validate` are called `errors` property is overwritten. You need to copy `errors` array reference to another variable if you want to use it later (e.g., in the callback). See [Validation errors](#validation-errors)
## Using in browser
You can require Ajv directly from the code you browserify - in this case Ajv will be a part of your bundle.
If you need to use Ajv in several bundles you can create a separate UMD bundle using `npm run bundle` script (thanks to [siddo420](https://github.com/siddo420)).
Then you need to load Ajv in the browser:
```html
<script src="ajv.min.js"></script>
```
This bundle can be used with diff
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
米思奇Mixly-V1.9.1软件安装包(含21个运行实例) (12845个子文件)
almond.0 2KB
avrdude.1 38KB
sshpk-conv.1 4KB
sshpk-conv.1 4KB
sshpk-sign.1 2KB
sshpk-sign.1 2KB
sshpk-verify.1 2KB
sshpk-verify.1 2KB
marked.1 2KB
almond.1 558B
libgcc.a 3.78MB
libgcc.a 3.58MB
libgcc.a 3.58MB
libgcc.a 3.51MB
libgcc.a 3.51MB
libgcc.a 3.51MB
libgcc.a 3.49MB
libgcc.a 3.49MB
libgcc.a 3.49MB
libgcc.a 3.49MB
libgcc.a 3.47MB
libgcc.a 3.47MB
libgcc.a 3.47MB
libgcc.a 3.47MB
libgcc.a 3.46MB
libgcc.a 3.46MB
libgcc.a 3.46MB
lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a 983KB
lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a 983KB
lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a 981KB
lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a 981KB
libbfd.a 706KB
libavrdude.a 501KB
libiberty.a 387KB
core.a 316KB
libc.a 295KB
libc.a 295KB
libc.a 292KB
libc.a 289KB
libc.a 288KB
libc.a 288KB
libc.a 287KB
libc.a 287KB
libc.a 286KB
libc.a 285KB
libc.a 285KB
libc.a 285KB
libc.a 285KB
libc.a 285KB
libc.a 284KB
libc.a 282KB
libc.a 250KB
libavr-sim.a 224KB
libusb-1.0.a 166KB
libelf.a 75KB
libm.a 65KB
libm.a 65KB
libm.a 65KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libm.a 64KB
libgcov.a 55KB
libgcov.a 55KB
liblto_plugin.dll.a 54KB
libgcov.a 53KB
libgcov.a 53KB
libgcov.a 52KB
libgcov.a 52KB
libgcov.a 52KB
libgcov.a 52KB
libgcov.a 52KB
libgcov.a 51KB
libgcov.a 51KB
libgcov.a 51KB
libgcov.a 51KB
libgcov.a 51KB
libgcov.a 51KB
libgcov.a 51KB
libgcov.a 51KB
libm.a 44KB
libusb.a 36KB
libnewlib_addons-at32ucr2-speed_opt.a 25KB
libnewlib_addons-at32ucr2-speed_opt.a 25KB
libnewlib_addons-at32ucr2-speed_opt.a 25KB
libnewlib_addons-at32ucr2-speed_opt.a 25KB
libopcodes.a 20KB
lib_ucr1_hd_spi_v2.7.0.a 13KB
lib_ucr1_hd_spi_v2.7.0.a 13KB
lib_ucr2_hd_spi_v2.7.0.a 13KB
lib_ucr2_hd_spi_v2.7.0.a 13KB
共 12845 条
- 1
- 2
- 3
- 4
- 5
- 6
- 129
资源评论
l_ingpeng
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 制冷剂管道设计和制造指南.pdf
- BRYANT制冷设备应用指南和维修手册.pdf
- 制冷管路设计指南Refrigerant Piping Design Guide Daikin AG 31-011 LR.pdf
- 环境标志产品技术要求 工商用制冷设备.pdf
- 工业制冷氨和二氧化碳应用.pdf
- 集成式制冷机房应用技术规程.pdf
- 冰箱压缩机参考设计用户指南.pdf
- APP-PRC006A-EN_02252021.pdf
- Polarcraft Brochure_July 2021_V2-1.pdf
- 蒸发式冷凝器工程手册.pdf
- 基于ZH5120设计的硬件技术开发资料.zip
- 模拟量滤波程序 西门子200smart程序,能实现电流电压和热电阻模拟量信号的采集,有滤波,有高位和低位报警,采用for循环指令和间接寻址,让程序简单好用,并且针对程序,录制了视频讲解,详细的介绍了程
- 基于ZH5212设计的产品电路原理图+PCB.zip
- 基于ZH5210设计的产品电路原理图+PCB.zip
- 基于ZH5213设计的产品电路原理图+PCB.zip
- 永磁同步电机矢量控制仿真,带SVPWM发波模块
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功