<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
没有合适的资源?快使用搜索试试~ 我知道了~
skiping:跳绳计数小程序源代码
共694个文件
js:254个
md:94个
json:93个
12 下载量 129 浏览量
2021-03-23
14:49:25
上传
评论 4
收藏 1.75MB ZIP 举报
温馨提示
跳过 跳绳计数小程序源代码最近一次,小孩子上小学了,每天下课作业里面有一项是1分钟跳绳。作为家长陪跳计数,同时提醒同时计数总容易忘记,所以萌生了写一个小程序辅助的想法。功能很简单,就是倒计时然后记录跳绳多少个,花了一周多的短暂时间上线了一个完整版本。页面请设计的同事帮忙弄弄一下,总共就2个页面如下: 用到的技术点如下: 1.倒计时(这个看似简单的功能,折腾了不少时间) 2.小程序按钮声音 3.存储数据的小程序云开发 4.以及部分页面逻辑处理 从网上找的倒计时代码或多或少总有点问题,直接递减的方案时间容易偏快或偏慢。一开始参考了这个项目发现使用setTimeout在小程序里循环调用会导致内存溢出。后来改用setInterval解决了内存溢出的问题。 按钮声音使用了wx.createInnerAudioContext()具体使用方法可以参考官方文档小程序的云开发针对这种小型应用真的是比
资源详情
资源评论
资源推荐
收起资源包目录
skiping:跳绳计数小程序源代码 (694个子文件)
sshpk-conv.1 4KB
sshpk-sign.1 2KB
sshpk-verify.1 2KB
address 673B
AUTHORS 217B
AUTHORS 169B
README.md.bak 7KB
calendar 945B
card 2KB
sshpk-verify.cmd 186B
sshpk-conv.cmd 182B
sshpk-sign.cmd 182B
uuid.cmd 168B
performance-now.coffee 1KB
scripts.coffee 1KB
performance-now.coffee 553B
delayed-require.coffee 362B
delayed-call.coffee 358B
initial-value.coffee 313B
difference.coffee 175B
jsl.node.conf 7KB
errors.def 8KB
definitions.def 4KB
coerce.def 2KB
missing.def 1KB
defaults.def 859B
.editorconfig 399B
.editorconfig 286B
.editorconfig 286B
.editorconfig 148B
.dir-locals.el 178B
.eslintignore 6B
.eslintignore 5B
.eslintrc 554B
.eslintrc 397B
.eslintrc 348B
.eslintrc 231B
.eslintrc 176B
.eslintrc 176B
.eslintrc 78B
geo 166B
.gitattributes 33B
.gitmodules 0B
example.html 200B
tslib.es6.html 36B
tslib.html 32B
hyper-schema 1KB
hyper-schema 1KB
hyper-schema 1KB
hyper-schema 942B
hyper-schema 936B
dashdash.bash_completion.in 14KB
info 289B
interfaces 845B
regenerator.min.js 957KB
ajv.bundle.js 255KB
nodent.min.js 223KB
psl.js 137KB
psl.min.js 121KB
ajv.min.js 113KB
index.js 108KB
nacl-fast.js 61KB
request.js 43KB
index.js 41KB
cookie.js 39KB
dashdash.js 34KB
nacl.js 32KB
nacl-fast.min.js 32KB
index.js 23KB
parse.js 22KB
properties.js 21KB
stringify.js 20KB
qs.js 19KB
nacl.min.js 19KB
x509.js 19KB
validate.js 18KB
jsprim.js 17KB
ajv.js 16KB
tests.js 15KB
ec.js 15KB
punycode.js 14KB
pkcs8.js 14KB
signer.js 13KB
form_data.js 12KB
required.js 12KB
verror.js 12KB
formats.js 11KB
certificate.js 11KB
tslib.js 11KB
aws4.js 11KB
validate.js 10KB
dhe.js 10KB
index.js 10KB
identity.js 10KB
parser.js 10KB
custom.js 10KB
dnssec.js 9KB
utils.js 9KB
pkcs1.js 9KB
index.js 9KB
共 694 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
起名什么的最烦啦
- 粉丝: 20
- 资源: 4639
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0