<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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【作品名称】:基于智能算法的舰载机调度仿真系统设计与实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于智能算法的舰载机调度仿真系统设计与实现
资源推荐
资源详情
资源评论
收起资源包目录
基于智能算法的舰载机调度仿真系统设计与实现 (2000个子文件)
dlmalloc.c 179KB
ffi.c 39KB
ffi_darwin.c 37KB
ffi.c 26KB
ffi.c 24KB
ffi.c 22KB
ffi.c 20KB
ffi.c 20KB
ffi64.c 17KB
ffi.c 17KB
closures.c 16KB
ffi.c 15KB
ffi.c 15KB
huge_struct.c 14KB
ffi.c 12KB
ffi.c 11KB
ffi.c 10KB
java_raw_api.c 8KB
ffi.c 8KB
ffi.c 8KB
ffi.c 7KB
ffi.c 7KB
prep_cif.c 7KB
raw_api.c 6KB
ffi.c 5KB
nested_struct1.c 5KB
stret_large2.c 5KB
stret_large.c 5KB
nested_struct.c 5KB
cls_pointer_stack.c 4KB
cls_64byte.c 4KB
stret_medium2.c 4KB
stret_medium.c 4KB
cls_align_longdouble_split.c 4KB
nested_struct10.c 3KB
nested_struct8.c 3KB
nested_struct9.c 3KB
nested_struct6.c 3KB
cls_7_1_byte.c 3KB
cls_24byte.c 3KB
cls_align_longdouble_split2.c 3KB
cls_6_1_byte.c 3KB
closure_loc_fn0.c 3KB
closure_fn6.c 3KB
closure_fn5.c 3KB
cls_5_1_byte.c 3KB
closure_fn4.c 3KB
closure_fn0.c 3KB
cls_19byte.c 3KB
closure_fn3.c 3KB
types.c 3KB
closure_fn2.c 3KB
closure_fn1.c 3KB
cls_4_1byte.c 3KB
cls_longdouble.c 3KB
nested_struct7.c 3KB
nested_struct5.c 3KB
nested_struct3.c 3KB
nested_struct4.c 3KB
cls_18byte.c 3KB
cls_7byte.c 3KB
cls_6byte.c 3KB
nested_struct2.c 3KB
float_va.c 3KB
cls_align_pointer.c 3KB
cls_3_1byte.c 3KB
cls_5byte.c 3KB
cls_align_uint64.c 3KB
cls_align_sint64.c 3KB
cls_16byte.c 3KB
cls_align_longdouble.c 3KB
cls_align_float.c 2KB
cls_20byte1.c 2KB
cls_20byte.c 2KB
cls_12byte.c 2KB
cls_align_uint16.c 2KB
cls_align_sint16.c 2KB
cls_align_uint32.c 2KB
cls_align_sint32.c 2KB
cls_align_double.c 2KB
cls_3byte2.c 2KB
cls_3byte1.c 2KB
cls_9byte1.c 2KB
cls_9byte2.c 2KB
pyobjc-tc.c 2KB
cls_2byte.c 2KB
cls_4byte.c 2KB
cls_8byte.c 2KB
problem1.c 2KB
cls_1_1byte.c 2KB
cls_multi_uchar.c 2KB
debug.c 2KB
cls_multi_ushortchar.c 2KB
cls_multi_sshortchar.c 2KB
closure_thiscall.c 2KB
closure_stdcall.c 2KB
cls_pointer.c 2KB
struct8.c 2KB
cls_multi_ushort.c 2KB
cls_longdouble_va.c 2KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
MarcoPage
- 粉丝: 4330
- 资源: 8838
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2024秋学期期中课设(大三):请假系统,软件架构:采用spring管理,mybatis,servlet.zip【源码+sql文件】
- 三菱FX5 PLC与基恩士SR1000读码器以太网通讯设置
- JSP基于SSM良好过滤音乐推荐管理系统设计毕业源码案例设计.zip
- 基于datax源码修改-添加对瀚高-对excel文件-对api接口的支持-dataxCode-v1.1.1.zip
- JSP基于SSM的学生毕业设计论文选题系统毕业源码案例设计.zip
- JSP基于SSM电影院订票系统设计源码毕业案例设计.zip
- CVPR2024-英文论文-平衡法案:扩散模型中的分布引导去偏(Balancing Act: Distribution-Guided Debiasing in Diffusion Models)
- JSP基于SSM校园二手书交易平台源码毕业案例设计.zip
- 电线线路隐藏风险检测35-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、VOC数据集合集.rar
- JSP基于SSM小区物业管理系统源码毕业案例设计.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功