<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. Supports draft-04/06/07.
[![Build Status](https://travis-ci.org/epoberezkin/ajv.svg?branch=master)](https://travis-ci.org/epoberezkin/ajv)
[![npm](https://img.shields.io/npm/v/ajv.svg)](https://www.npmjs.com/package/ajv)
[![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)
## Using version 6
[JSON Schema draft-07](http://json-schema.org/latest/json-schema-validation.html) is published.
[Ajv version 6.0.0](https://github.com/epoberezkin/ajv/releases/tag/v6.0.0) that supports draft-07 is released. It may require either migrating your schemas or updating your code (to continue using draft-04 and v5 schemas, draft-06 schemas will be supported without changes).
__Please note__: To use Ajv with draft-06 schemas you need to explicitly add the meta-schema to the validator instance:
```javascript
ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-06.json'));
```
To use Ajv with draft-04 schemas in addition to explicitly adding meta-schema you also need to use option schemaId:
```javascript
var ajv = new Ajv({schemaId: 'id'});
// If you want to use both draft-04 and draft-06/07 schemas:
// var ajv = new Ajv({schemaId: 'auto'});
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)
- [Annotation keywords](#annotation-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)
- [Security considerations](#security-considerations)
- [Security contact](#security-contact)
- [Untrusted schemas](#untrusted-schemas)
- [Circular references in objects](#circular-references-in-javascript-objects)
- [Trusted schemas](#security-risks-of-trusted-schemas)
- 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)
- [Plugins](#plugins)
- [Related packages](#related-packages)
- [Some packages using Ajv](#some-packages-using-ajv)
- [Tests, Contributing, History, Support, 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-06/07](http://json-schema.org/) and draft-04 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-07 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-06/07 keywords `const`, `contains`, `propertyNames` and `if/then/else`
- draft-06 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.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 i
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
适用工作项目、毕业设计,课程设计,项目源码均经过助教老师测试,运行无误,欢迎下载 运行环境:jdk8+mysql5.7+IntelliJ IDEA+maven 技术:springboot+mybatis+layui+shiro+jquery 教务管理系统是一个基于网络的在线管理平台 , 帮助学校管理教务系统,用一个帐号解决学校教务教学管理,灵活的定制符合学校自己实际情况的教务系统。 功能介绍 教务管理系统分为微信小程序和3个子系统,3个子系统分别是管理员系统、教师系统和学生系统,分别对应拥有不同权限的角色:管理员、教师和学生; (1)管理员系统:管理员可以管理课程、管理教师、管理学生、发布校园公告、校建管理、教评问题管理、分配权限等功能; (2)教师系统:教师登录教师系统,可以查看自己所教授的课程信息、查看某门课程所选学生信息、给学生打分以及修改自己的登录密码; (3)学生系统:学生根据姓名和密码登录自己的学生系统,可以查看所有的课程信息、查看已选课程、查看已修课程、选课以及退课等操作。 (4)微信小程序:主要实现了学生的成绩查询、学生信息查询、网上教评、学生选课、退课等功能。
资源推荐
资源详情
资源评论
收起资源包目录
Java学校教务管理系统源码带微信小程序(spring+springMVC+myBatis与小程序).rar (2000个子文件)
index.css 307B
index.css 307B
index.css 307B
软件系统使用说明书.docx 1.15MB
Niceschool教务系统项目策划书.docx 19KB
个人模块说明-王浩楠.docx 12KB
个人模块说明-李亚轩.docx 12KB
个人模块说明-焦振坤.docx 12KB
个人模块说明-叶梦柯.docx 11KB
个人模块说明-黎晓晓.docx 11KB
index.html 1KB
index.html 1KB
index.html 1KB
example.html 200B
esprima.js 277KB
esprima.js 277KB
esprima.js 277KB
index.js 262KB
psl.js 148KB
psl.min.js 124KB
errors.js 83KB
errors.js 83KB
errors.js 83KB
errors.js 83KB
errors.js 83KB
ssl_profiles.js 78KB
ssl_profiles.js 78KB
ssl_profiles.js 78KB
index.js 41KB
long.js 39KB
long.js 39KB
long.js 39KB
long.js 39KB
long.js 39KB
long.js 39KB
dashdash.js 34KB
sbcs-data-generated.js 31KB
sbcs-data-generated.js 31KB
sbcs-data-generated.js 31KB
sbcs-data-generated.js 31KB
sbcs-data-generated.js 31KB
sbcs-data-generated.js 31KB
connection.js 25KB
connection.js 25KB
connection.js 25KB
connection.js 25KB
connection.js 25KB
packet.js 24KB
packet.js 24KB
packet.js 24KB
packet.js 23KB
packet.js 23KB
node_cache.js 22KB
dbcs-codec.js 21KB
dbcs-codec.js 21KB
dbcs-codec.js 21KB
dbcs-codec.js 21KB
dbcs-codec.js 21KB
dbcs-codec.js 21KB
x509.js 19KB
ssl_profiles.js 18KB
ssl_profiles.js 18KB
tests.js 15KB
tests.js 15KB
tests.js 15KB
tests.js 15KB
tests.js 15KB
XMLWriterBase.js 15KB
pkcs8.js 14KB
signer.js 13KB
parser.js 12KB
punycode.es6.js 12KB
punycode.js 12KB
index.js 12KB
certificate.js 11KB
index.js 11KB
index.js 11KB
index.js 11KB
index.js 11KB
index.js 11KB
index.js 11KB
index.js 11KB
is-property.js 11KB
is-property.js 11KB
is-property.js 11KB
is-property.js 11KB
is-property.js 11KB
validate.js 11KB
aws4.js 11KB
index.js 10KB
index.js 10KB
index.js 10KB
index.js 10KB
index.js 10KB
index.js 10KB
promise.js 10KB
promise.js 10KB
promise.js 10KB
promise.js 10KB
promise.js 10KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
程皮
- 粉丝: 277
- 资源: 2566
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功