什么是 Ajv?
Ajv(Another JSON Schema Validator)是一个用于验证 JSON 数据的开源库,基于 JSON Schema 规范实现。它支持 JSON Schema draft-04/06/07 和 JSON Type Definition(JTD)规范,并且在性能和功能方面优于其他 JSON Schema 验证器。
安装 Ajv
使用 npm 可以很容易地安装 Ajv:
npm install ajv
使用 Ajv
编写 JSON Schema
在使用 Ajv 进行数据验证之前,我们需要编写符合 JSON Schema 规范的 schema。下面是一个简单的例子:
-- -------------------- ---- ------- - ------ ----------------------------------------- ---------- ------------------------------------------ -------- --------- ------- --------- ----------- ------------- ------------ ------------- - ------------ - ------- -------- -- ----------- - ------- -------- -- ------ - -------------- ---- -- ------- ------- ---------- ---------- - - - -
这个 schema 描述了一个人的基本信息,包括名字、姓氏和年龄。它要求必须提供 firstName 和 lastName 属性,age 属性是可选的,但如果存在,则必须是大于等于 0 的整数。
验证数据
有了 schema,我们就可以使用 Ajv 来验证数据了。下面是一个简单的例子:
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ----- ------ - - ------ ----------------------------------------- ---------- ------------------------------------------ -------- --------- ------- --------- ----------- ------------- ------------ ------------- - ------------ - ------- -------- -- ----------- - ------- -------- -- ------ - -------------- ---- -- ------- ------- ---------- ---------- - - - -- ----- ---- - - ---------- ------- --------- ------ ---- -- -- ----- -------- - -------------------- ----- ------- - --------------- -- --------- - ---------------------- - ---- - --------------------- ----------------- -
在这个例子中,我们首先创建了一个 Ajv 实例,然后编写了一个 JSON Schema。接着,我们定义了要验证的数据,并使用 ajv.compile
方法编译了 schema,并使用编译后的 schema 验证数据。
如果数据验证通过,validate
方法返回 true;否则,它将返回 false,并且错误信息将存储在 validate.errors
中。
自定义关键字
Ajv 允许你定义自己的关键字,以扩展其功能。以下是一个自定义关键字的例子:
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ----------------------- - ----- --------- --------- -------- -------- ----- - ------ ---- -- --------- -- ---- -- ---------- - --- ----- ------ - - ----- --------- ------ --- --- -- ----- ---- - -- ----- -------- - -------------------- ----- ------- - --------------- -- --------- - ---------------------- - ---- - --------------------- ----------------- -
在这个例子中,我们定义了一个自定义关键字 range
,它接受一个包含两个数字的数组作为参数。在 schema 中使用 range
关键字时,它将确保数据位于指定的范围内。
总结
Ajv 是一个非常强大的 JSON Schema 验证库,它支持多种规范,具有优异的性能和功能。本文介
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/33728