z-schema

z-schema npm 地址

z-schema github地址

JavaScript编写的 JSON Schema 验证器用于 NodeJS和浏览器。

version 3也在可以在浏览器中运行,你可以自己在这运行测试

Topics

用法(Usage)

验证器将尝试在可能的速度下执行同步验证,但在必要时支持异步回调。

CLI:

npm install --global z-schema
z-schema --help
z-schema mySchema.json
z-schema mySchema.json myJson.json
z-schema --strictMode mySchema.json myJson.json

NodeJS:

同步模式:

异步模式:

Browser:

远程引用和schemas:

如果您的架构中有一些远程引用,则必须在使用验证器之前下载这些schemas。否则,当试图编译schemas时,将获得UNRESOLVABLE_REFERENCE错误。

如果能够同步加载schemas,则可以使用ZSchema.setSchemaReader特性:

特征

验证 subschema

如果由于任何原因不想使用引用,将schema分割为多个schema,则可以在验证时使用schemaPath选项:

test 中查看更多细节。

编译schemas数组并使用它们之间的引用

可以使用验证器编译具有它们之间的引用的schema数组 , 然后对其中一个schema进行验证。

注册自定义格式

你可以注册任何你自己的格式。您的同步验证函数应该始终用boolean响应:

还支持异步格式验证器,它们应该接受两个参数、值和它们需要响应的回调:

帮助检查已注册的格式的Help方法

远程schemas的自动下载

远程模式的自动下载已经从3.x版本中移除,但是仍然可以使用一些额外的代码,有关这方面的更多信息,请参阅此测试

使用格式预填充默认值到对象

使用格式,您可以预先将选择的值填充到这样的对象中:

选项(Options)

asyncTimeout

定义一个时间限制,在ASYNC_TIMEOUT错误导致验证失败之前,在等待异步任务(如异步格式验证器)执行验证时,应该使用这个时间限制。

noEmptyArrays

当为true时,验证器将假定任何数组中的项的最小计数为1,除非minItems: 0被显式定义。

noEmptyStrings

如果为true,则验证器假定任何字符串的传递字符串类型验证的最小长度为1,除非minLength: 0是显式定义的。

noTypeless

如果为true,则验证器将对没有指定期望的对象类型的schemas进行验证失败。

noExtraKeywords

当为true时,验证器将无法验证使用JSON Schema规范中未定义的关键字、且未在$schema属性中提供父schema来验证schema。

assumeAdditional

当为true时,验证器假设additionalItems/additionalProperties被定义为false,因此您不必手动修复所有schemas

当为一个数组时,验证器假设additionalItems/additionalProperties被定义为false,但是允许一些属性通过。

forceAdditional

当为true时,验证器不验证schemas,其中additionalItems/additionalProperties应该定义为true或false。

forceItems

如果为true,则验证程序不验证schemas中item没有为array类型的schemas。这是为了避免通过数组定义传递任何内容。

更多的参数参见链接

基准点(Benchmarks)

那么它如何与version 2.x和其他版本相比呢?

注意:这些测试纯粹是面向对象的,它们不考虑任何验证器的额外特性

rawgithub.com/zaggino/z-schema/master/benchmark/results.html

Last updated

Was this helpful?