<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@beta](https://img.shields.io/npm/v/ajv/beta.svg)](https://github.com/epoberezkin/ajv/tree/beta)
[![npm downloads](https://img.shields.io/npm/dm/ajv.svg)](https://www.npmjs.com/package/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)
__Please note__: Ajv [version 6](https://github.com/epoberezkin/ajv/tree/beta) with [JSON Schema draft-07](http://json-schema.org/work-in-progress) support is released. Use `npm install ajv@beta` to install.
## 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)
- [Combining schemas with $ref](#ref)
- [$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)
Performance 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:|djv|ajv|json-schema-validator-generator|jsen|is-my-json-valid|themis|z-schema|jsck|skeemas|json-schema-library|tv4&chd=t:100,98,72.1,66.8,50.1,15.1,6.1,3.8,1.2,0.7,0.2)](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 Node.js 0.10-8.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
```
or to install [version 6](https://github.com/epoberezkin/ajv/tree/beta):
```
npm install ajv@beta
```
## <a name="usage"></a>Getting started
Try it in the Node.js 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
// ...
var valid = ajv.addSchema(schema, 'mySchema')
.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 [fast-json-stable-stringify](https://github.com/epoberezkin/fast-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 a 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
没有合适的资源?快使用搜索试试~ 我知道了~
Qt-5.12.12源码
共2001个文件
h:720个
md:552个
cpp:532个
需积分: 0 33 下载量 16 浏览量
2023-08-13
19:08:23
上传
评论
收藏 830.77MB ZIP 举报
温馨提示
1、Qt5.12.12的源代码 2、从CSDN资源下载中心下载网速会快很多
资源推荐
资源详情
资源评论
收起资源包目录
Qt-5.12.12源码 (2001个子文件)
gstvideoconnector.c 18KB
tst_qcamera.cpp 104KB
mfvideorenderercontrol.cpp 78KB
qgstreamerplayersession.cpp 67KB
evrcustompresenter.cpp 60KB
qpaintervideosurface.cpp 58KB
mfplayersession.cpp 57KB
directshowplayerservice.cpp 57KB
qwebglcontext.cpp 57KB
qgstutils.cpp 57KB
tst_qmediarecorder.cpp 55KB
camerabinsession.cpp 53KB
qdeclarativeaudio.cpp 53KB
qwinrtcameracontrol.cpp 52KB
qmediaplayer.cpp 51KB
tst_qmediaplayerbackend.cpp 51KB
androidcamera.cpp 50KB
tst_qvideowidget.cpp 50KB
tst_qmediaplayer.cpp 50KB
tst_qmediaplaylist.cpp 47KB
qvideoframe.cpp 44KB
qcamera.cpp 43KB
dscamerasession.cpp 43KB
tst_qaudiooutput.cpp 43KB
tst_qpaintervideosurface.cpp 42KB
tst_qdeclarativeaudio.cpp 41KB
bbcamerasession.cpp 40KB
tst_qaudioinput.cpp 38KB
tst_qvideoframe.cpp 38KB
qdeclarativecamera.cpp 37KB
qgstreamercapturesession.cpp 36KB
directshowmetadatacontrol.cpp 35KB
tst_qdeclarativevideo.cpp 35KB
qsoundeffect_pulse_p.cpp 35KB
qmediarecorder.cpp 33KB
qmediaserviceprovider.cpp 33KB
qandroidcamerasession.cpp 33KB
tst_qvideosurfaceformat.cpp 30KB
qdeclarativevideooutput.cpp 30KB
tst_qdeclarativevideooutput.cpp 29KB
qwinrtmediaplayercontrol.cpp 28KB
qvideowidget.cpp 27KB
tst_qcamerabackend.cpp 26KB
qwebglintegration.cpp 26KB
qalsaaudioinput.cpp 25KB
qalsaaudiooutput.cpp 25KB
qmediaplaylist.cpp 24KB
qandroidmediaplayercontrol.cpp 24KB
qmediaencodersettings.cpp 24KB
videosurfacefilter.cpp 23KB
tst_qmediaresource.cpp 23KB
qandroidcapturesession.cpp 23KB
qopenslesaudiooutput.cpp 23KB
qvideosurfacegstsink.cpp 22KB
qcameraexposure.cpp 22KB
qwindowsaudioinput.cpp 22KB
mftvideo.cpp 22KB
qdeclarative_audioengine_p.cpp 21KB
qvideosurfaceformat.cpp 21KB
qcameraimagecapture.cpp 21KB
qaudiooutput_pulse.cpp 21KB
qgstreameraudiodecodersession.cpp 20KB
tst_qmediatimerange.cpp 20KB
qsgvideonode_yuv.cpp 20KB
mmrenderermediaplayercontrol.cpp 20KB
qplaylistfileparser.cpp 20KB
qgstreamerplayercontrol.cpp 19KB
qaudioinput_pulse.cpp 19KB
evrd3dpresentengine.cpp 19KB
qsoundeffect.cpp 19KB
mfmetadatacontrol.cpp 19KB
tst_qaudiodecoderbackend.cpp 19KB
tst_webgl.cpp 19KB
qdeclarativecamerarecorder.cpp 19KB
tst_qgraphicsvideoitem.cpp 19KB
qwindowsaudiooutput.cpp 19KB
qwasapiaudiooutput.cpp 18KB
qgstvideorenderersink.cpp 18KB
qdeclarativevideooutput_render.cpp 18KB
qcamerafocus.cpp 18KB
qdeclarativeplaylist.cpp 18KB
qgstreamervideooverlay.cpp 18KB
qmediatimerange.cpp 18KB
directshowpin.cpp 18KB
player.cpp 18KB
camerabinfocus.cpp 18KB
qdeclarative_sound_p.cpp 18KB
qaudiobuffer.cpp 18KB
qwasapiaudioinput.cpp 18KB
tst_qmediaplaylistnavigator.cpp 18KB
mfaudiodecodercontrol.cpp 17KB
camerabinimageprocessing.cpp 17KB
tst_qaudionamespace.cpp 17KB
qradiotuner.cpp 16KB
qopenslesaudioinput.cpp 16KB
qdeclarativeradio.cpp 16KB
directshowcameraexposurecontrol.cpp 16KB
qwinrtabstractvideorenderercontrol.cpp 16KB
qwindowsaudiodeviceinfo.cpp 16KB
qnxaudiooutput.cpp 16KB
共 2001 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21
资源评论
刘亿辰
- 粉丝: 73
- 资源: 79
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功