# Ajv: Another JSON Schema Validator
The fastest JSON Schema validator for node.js and browser. Supports [v5 proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals).
[![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)
[![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)
[![Gitter](https://img.shields.io/gitter/room/ajv-validator/ajv.svg)](https://gitter.im/ajv-validator/ajv)
## 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)
- [$data reference](#data-reference)
- NEW: [$merge and $patch keywords](#merge-and-patch-keywords)
- [Defining custom keywords](#defining-custom-keywords)
- [Asynchronous schema compilation](#asynchronous-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 4](http://json-schema.org/) standard:
- 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-6.x
- [asynchronous loading](#asynchronous-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)
- keywords `switch`, `constant`, `contains`, `patternGroups`, `patternRequired`, `formatMaximum` / `formatMinimum` and `formatExclusiveMaximum` / `formatExclusiveMinimum` from [JSON-schema v5 proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) with [option v5](#options)
- [v5 meta-schema](https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#) for schemas using v5 keywords
- [v5 $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 stringified with [json-stable-stringify](https://github.com/substack/json-stable-stringify) 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>
```
This bundle can be used with different module systems or creates global `Ajv` if no module system is found.
The browser bundle is available on [cdnjs](https://cdnjs.com/libraries/ajv).
Ajv is tested with these browsers:
[![Sauce Test Status](https://saucelabs.com/browser-matrix/epoberezkin.svg)](https://saucelabs.com/u/epoberezkin)
__Please note__: some frameworks, e.g. Dojo, may redifine global require in such way that is not compatible with CommonJS module format. In such case Ajv bundle has to be loaded before the framework and then you can use global Ajv (see issue [#234](https://github.com/epoberezkin/ajv/issues/234)).
## Command line interface
CLI is available as a separate npm package [ajv-cli](https://github.com/jessedc/ajv-cli). It supports:
- compiling JSON-schemas to test their validity
- BETA: generating standalone module exporting a validation funct
没有合适的资源?快使用搜索试试~ 我知道了~
【推荐】静态商城.zip小程序源码打包下载适合研究学习技术
共2000个文件
js:2982个
json:233个
md:168个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 174 浏览量
2022-03-12
20:22:54
上传
评论
收藏 5.02MB ZIP 举报
温馨提示
【推荐】静态商城.zip小程序源码打包下载适合研究学习技术【推荐】静态商城.zip小程序源码打包下载适合研究学习技术 1.有可能需要安装微擎框架安装微擎小程序。 2.适合程序员学习研究用 3.适合小公司换皮做新项目参考使用用
资源推荐
资源详情
资源评论
收起资源包目录
【推荐】静态商城.zip小程序源码打包下载适合研究学习技术 (2000个子文件)
base.css 5KB
prettify.css 676B
index.js.html 4KB
html-template-page.html 3KB
index.html 3KB
index.html 3KB
angular.html 690B
html-template-message.html 321B
html-template-result.html 158B
lodash.js 526KB
regenerator.min.js 331KB
ajv.bundle.js 269KB
rx.lite.js 222KB
nodent.min.js 210KB
esprima.js 189KB
_data.js 128KB
acorn.js 125KB
acorn.es.js 119KB
ajv.min.js 117KB
acorn.js 116KB
es6-destructuring-assignments.js 115KB
core.js 112KB
acorn.es.js 110KB
laraArea.js 104KB
js-yaml.js 103KB
scope.js 81KB
referencer.js 77KB
rx.lite.min.js 72KB
lodash.min.js 71KB
showdown.js 71KB
index.js 61KB
acorn_loose.js 47KB
ExportMap.js 46KB
acorn_loose.js 44KB
es6-iteration-scope.js 44KB
code-path-state.js 43KB
acorn_loose.es.js 43KB
loader.js 41KB
indent.js 41KB
js-yaml.min.js 41KB
eslint.js 41KB
acorn_loose.es.js 40KB
scope-manager.js 37KB
typed.js 35KB
es6-export.js 35KB
argument_parser.js 34KB
es6-class.js 33KB
doctrine.js 31KB
es6-block-scope.js 30KB
expression.js 29KB
promiseEs6Fix.js 28KB
code.js 28KB
pattern-visitor.js 28KB
estraverse.js 27KB
estraverse.js 27KB
espree.js 25KB
cli-engine.js 25KB
statement.js 25KB
_stream_readable.js 25KB
order.js 25KB
expression.js 25KB
dumper.js 25KB
minimatch.js 25KB
config.js 24KB
key-spacing.js 24KB
validateConfig.js 24KB
ast-utils.js 23KB
no-extra-parens.js 23KB
validateStreamConfig.js 23KB
tokenize.js 23KB
tokenize.js 22KB
index.js 22KB
statement.js 22KB
no-unused-vars.js 22KB
formatter.js 21KB
index.js 21KB
namespace.js 21KB
keyword-spacing.js 20KB
properties.js 20KB
scope.js 19KB
implicit-global-reference.js 19KB
glob.js 19KB
code-path-analyzer.js 19KB
referencer.js 19KB
es6-import.js 19KB
config-file.js 18KB
index.js 18KB
expression.js 18KB
prettify.js 17KB
rule-tester.js 17KB
index.js 17KB
config-initializer.js 16KB
expression.js 16KB
_baseConvert.js 16KB
validate.js 15KB
curly.js 15KB
valid-jsdoc.js 15KB
no-deprecated.js 15KB
object-shorthand.js 15KB
newline-after-import.js 15KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
yxkfw
- 粉丝: 82
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MySQL基础-自然语言全文搜索.pdf
- 北大纵横—中国城市设计西南分院—0820培训工作计划.doc
- 北大纵横—中国城市设计西南分院—1801培训控制程序.doc
- 北大纵横—中国城市设计西南分院—北大纵横培训——动荡期的企业增长盈利模式.ppt
- 北大纵横—中国城市设计西南分院—培训工作计划-xf.doc
- 北大纵横—中国城市设计西南分院—项目管理培训教材(66P).ppt
- 北海烟草人力资源咨询—北海烟草人力资源管理咨询培训计划(第二阶段).doc
- mysql安装配置教程.txt
- 北海烟草人力资源咨询—培训管理流程.doc
- 北海烟草人力资源咨询—北海烟草人力资源培训计划.doc
- 北海烟草人力资源咨询—培训管理流程〜.doc
- 北海烟草人力资源咨询—人力资源资源培训计划.doc
- 北海烟草人力资源咨询—现代人力资源管理培训课程安排.doc
- mysql安装配置教程.txt
- 博思智联-三联集团-培训汇总表1-8.doc
- 博思智联-三联集团-评估培训.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功