<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)
- [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)
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
没有合适的资源?快使用搜索试试~ 我知道了~
node-v9.2.1.tar.gz
0 下载量 12 浏览量
2024-04-14
23:55:49
上传
评论
收藏 29.61MB GZ 举报
温馨提示
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
资源推荐
资源详情
资源评论
收起资源包目录
node-v9.2.1.tar.gz (2000个子文件)
ecp_nistz256_table.c 603KB
ares_platform.c 481KB
nghttp2_session.c 223KB
t1_lib.c 146KB
ec_curve.c 136KB
s3_clnt.c 126KB
s3_srvr.c 125KB
s_server.c 114KB
ssltest.c 110KB
nghttp2_hd_huffman_data.c 109KB
s3_lib.c 106KB
ssl_lib.c 104KB
ca.c 93KB
speed.c 91KB
apps.c 89KB
s_client.c 79KB
x509_vfy.c 78KB
deflate.c 77KB
kssl.c 75KB
ecp_nistp256.c 74KB
gcm128.c 72KB
e_aes.c 71KB
ares_init.c 71KB
ecp_nistp521.c 70KB
ssl_ciph.c 68KB
d1_pkt.c 65KB
fs.c 64KB
ecp_nistp224.c 62KB
bss_dgram.c 62KB
aes_core.c 61KB
nghttp2_hd.c 61KB
ectest.c 59KB
s3_pkt.c 59KB
bntest.c 55KB
e_capi.c 55KB
req.c 55KB
str_lib.c 54KB
inflate.c 54KB
d1_both.c 53KB
ecp_nistz256.c 52KB
s_cb.c 49KB
bn_exp.c 48KB
cms.c 47KB
t1_enc.c 47KB
ares_process.c 45KB
ssl_err.c 44KB
ocsp.c 44KB
x509.c 43KB
stream.c 43KB
trees.c 43KB
e_chil.c 43KB
v3_addr.c 42KB
ssl_sess.c 42KB
t1_trce.c 42KB
util.c 42KB
eng_cryptodev.c 41KB
seed.c 41KB
gzlog.c 41KB
s2_srvr.c 40KB
aes_x86core.c 40KB
ec_asn1.c 40KB
tasn_dec.c 39KB
bn_nist.c 39KB
ecp_smpl.c 39KB
v3_utl.c 38KB
pk7_doit.c 38KB
fs.c 38KB
e_sureware.c 38KB
e_padlock.c 38KB
ssl_cert.c 36KB
s2_clnt.c 36KB
pkcs12.c 36KB
mttest.c 35KB
e_cswift.c 35KB
process.c 34KB
destest.c 34KB
bn_gf2m.c 34KB
ts.c 34KB
d1_srvr.c 34KB
wp_block.c 34KB
s3_enc.c 34KB
e_ubsec.c 34KB
e_aes_cbc_hmac_sha1.c 33KB
e_aes_cbc_hmac_sha256.c 33KB
err.c 33KB
ts_rsp_sign.c 32KB
cryptlib.c 32KB
e_aep.c 32KB
bn_mul.c 31KB
ec_lib.c 31KB
ssl_rsa.c 31KB
aix.c 31KB
s3_cbc.c 30KB
ssl_stat.c 30KB
bn_asm.c 30KB
e_4758cca.c 30KB
bad_dtls_test.c 29KB
camellia.c 29KB
d1_clnt.c 29KB
asn_mime.c 29KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
程序员Chino的日记
- 粉丝: 3743
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 00906电子商务网站设计原理
- 编程算法之判断平方数及其倍数:Python语言实现在线测评系统的数学挑战
- Comsol基于BIC的多重手性CD
- 数据结构大题11111
- 基于arduino +DAC8031的心电信号模拟器资料,可输出心电信号,和正弦波
- 基于PCA+BP神经网络的人脸识别程序-matlab实现源码(高分项目)
- 51单片机开发的自行车里程测速项目,包括程序源码和原理图,详细制作说明 使用霍尔传感器获得脉冲信号,对脉冲信号进行计数 实现里程,速度测试和显示 程序源码注释详细
- 一种通过鲸鱼优化算法 WOA(也可做其他优化算法)对核极限学习机(KELM)的核参数及正则化项等参数进行优化,建立WOA-KELM回归预测模型,多输入单输出模型,时间窗法,代码注释清晰,替数据简单,只
- 李子和李子树病害图像分类数据集【已标注,约400张数据】
- 水力压裂裂缝三向地应力分布解析模型,matlab代码实现
- 软件开发技术基础-文档-视频-源码.zip
- MATLAB全桥或者半桥LLC谐振DC DC变器仿真 内含开环仿真、电压闭环仿真等三个仿真文件 并含有电路参数仿真计算过程 三个仿真一个报告
- Resnet 网络改进实战(添加SelfAttention自注意力机制):蘑菇图像分类
- 编译原理代码工程.7z
- Java课程设计,个人学习整理,仅供参考
- java程序语言课程设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功