<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)
- [$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>
```
This bundle can be used with diff
没有合适的资源?快使用搜索试试~ 我知道了~
ionic2自定义插件demo
共2000个文件
js:11551个
json:2618个
ts:2232个
需积分: 10 21 下载量 117 浏览量
2017-07-25
16:17:08
上传
评论
收藏 44.49MB 7Z 举报
温馨提示
结合http://blog.csdn.net/Yoryky/article/details/76080885博客的一个关于自定义ionic2插件的demo
资源推荐
资源详情
资源评论
收起资源包目录
ionic2自定义插件demo (2000个子文件)
cencode.c 2KB
c99func.c 2KB
parser.cpp 95KB
ast.cpp 79KB
extend.cpp 76KB
functions.cpp 71KB
eval.cpp 60KB
prelexer.cpp 46KB
json_value.cpp 38KB
json_value.cpp 38KB
color_maps.cpp 32KB
json.cpp 32KB
context.cpp 32KB
sass_context.cpp 30KB
inspect.cpp 30KB
expand.cpp 26KB
sass2scss.cpp 24KB
json_reader.cpp 21KB
json_reader.cpp 21KB
json_writer.cpp 20KB
json_writer.cpp 20KB
cssize.cpp 18KB
util.cpp 17KB
file.cpp 15KB
sass_values.cpp 14KB
binding.cpp 13KB
test_subset_map.cpp 12KB
bind.cpp 11KB
node.cpp 10KB
check_nesting.cpp 9KB
output.cpp 9KB
sass_functions.cpp 8KB
constants.cpp 8KB
plugin.cpp 7KB
plugin.cpp 7KB
units.cpp 7KB
source_map.cpp 7KB
emitter.cpp 7KB
error_handling.cpp 6KB
plugins.cpp 6KB
lexer.cpp 6KB
tokenizer.cpp 6KB
tokenizer.cpp 6KB
environment.cpp 5KB
camera.cpp 5KB
camera.cpp 5KB
values.cpp 5KB
sass.cpp 5KB
position.cpp 5KB
keyboard_ndk.cpp 4KB
keyboard_ndk.cpp 4KB
sass_util.cpp 4KB
color.cpp 4KB
map.cpp 3KB
custom_importer_bridge.cpp 3KB
keyboard_js.cpp 3KB
keyboard_js.cpp 3KB
list.cpp 3KB
Logger.cpp 3KB
Logger.cpp 3KB
utf8_string.cpp 3KB
SharedPtr.cpp 3KB
remove_placeholders.cpp 2KB
boolean.cpp 2KB
to_value.cpp 2KB
listize.cpp 2KB
test_node.cpp 2KB
to_c.cpp 2KB
factory.cpp 2KB
plugin.cpp 2KB
number.cpp 2KB
test_superselector.cpp 2KB
device.cpp 2KB
device.cpp 2KB
subset_map.cpp 2KB
sass_context_wrapper.cpp 2KB
null.cpp 2KB
splashscreen.cpp 1KB
splashscreen.cpp 1KB
string.cpp 1KB
base64vlq.cpp 1KB
console.cpp 924B
console.cpp 924B
test_unification.cpp 892B
custom_function_bridge.cpp 750B
ast_fwd_decl.cpp 676B
error.cpp 570B
test_selector_difference.cpp 553B
test_specificity.cpp 535B
test_paths.cpp 509B
create_string.cpp 446B
main.css 477KB
main.css 477KB
main.css 477KB
ionic.dark.css 464KB
ionic.css 464KB
ionic.min.css 375KB
ionic.dark.min.css 375KB
ionicons.css 73KB
ionicons.min.css 65KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
小草的胖冬瓜
- 粉丝: 65
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2SJ343-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 一款基于Matlab的像素级图像标记工具,支持FITS、JPG、PNG、TIF等图像格式,可导出所有标记点坐标+源代码+文档说明
- 基于javaweb的在线答题平台.zip
- 三菱PLC例程源码丹佛斯变频器与FX通讯实例(适用于所有丹佛斯变频器)
- 微信每日早安问候(用微信传递爱情).zip
- 基于matlab-模板匹配-角度修正的铭牌识别+源代码+文档说明
- 三菱PLC例程源码丹佛斯VT2800与FX2N用RS485通讯示例
- 微信 macOS 客户端增强 Tweak 动态库.zip
- UAM概念飞机 UAM概念飞机
- 一个使用 Java 开发的、类似 WordPress 的产品,支持多站点、多语种自动切换等.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功