在前端开发中,我们经常需要对 JSON 数据进行有效性验证。@hyperjump/json-validation 是一个 NPM 包,提供了一个简单的方法来验证 JSON 数据的结构和内容。本文将介绍 @hyperjump/json-validation 的使用方法。
安装
在终端中运行以下命令将 @hyperjump/json-validation 安装到你的项目中:
npm install --save @hyperjump/json-validation
使用
@hyperjump/json-validation 主要提供了 validate()
方法来对 JSON 数据进行验证。下面是一个简单的例子:
-- -------------------- ---- ------- ----- -------------- - -------------------------------------- ----- ------ - - ------ --------- ------------ - ------- - ----- -------- -- ------ - ----- -------- - --- ---------- -------- ------ -- ----- ---- - - ------ ----- ----- ----- -- -- ----- ----- - ----------------------------- -------- ------------------- -- ----
在这个例子中,我们定义了一个包含 name
和 age
属性的 JSON 数据,并且设置了 schema
,该 schema
包含了相同的属性和类型定义。调用 validate()
方法,返回的结果为 true
,因为数据和模式完全匹配。
模式
@hyperjump/json-validation 的模式定义遵循 JSON Schema 规范。它允许指定对象类型、属性、格式、枚举、值范围等等。你可以在 JSON Schema 的官方文档 中了解更多。
下面是一个稍微复杂一些的例子:
-- -------------------- ---- ------- ----- ------ - - ------ --------- ------------ - ---------- - -------- --------- -------------- - --------- - ----- -------- -- ---------- - ---------- --------- ------------- ------------------------ ----- ----- ------------ -------- -------- ---- -------- - -------- -------- --------- - --------- --------- --------------- - ---------- - ----- -------- -- -------------- - ----- --------- -------- - - ------ ------------- -------- ----------- ---- --- --- ---------- ----------- -------- --
这个模式定义一个对象,包含一个 contact
属性和一个 items
属性。contact
属性是一个对象,必须包含 name
和 phone
属性,其中 phone
属性必须与正则表达式 ^\d{3}-\d{3}-\d{4}$
匹配。items
属性是一个数组,其中每个项目都必须是一个包含 name
和 quantity
属性的对象,其中 quantity
属性必须大于等于 1。
错误提示
在进行验证时,有时需要了解 JSON 数据中有哪些属性无效以及为什么无效。@hyperjump/json-validation 提供了一种错误处理方式,可以帮助你进行调试和错误报告。
const valid = jsonValidation.validate(data, schema); if (!valid) { console.log(jsonValidation.errors()); }
在判断验证结果为 false 的情况下,使用 jsonValidation.errors()
方法查看错误信息。这样就可以知道哪些验证失败了,以及为什么失败了,如下所示:
-- -------------------- ---- ------- - - ------------- ----------- ----------- -------------------------------- -------- ----------- ------- - ---------------- ------- -- -------- ----- ---- -------- -------- -------- -- - ------------- ----------- ----------- ------------------------------------ -------- ----------- ------- - ---------------- ---------- -- -------- ----- ---- -------- -------- ----------- -- - ------------- ----------- ----------- ------------------------------------ -------- ----------- ------- - ---------------- ------ -- -------- ----- ---- -------- -------- ------- - -
这里我们可以知道,模式定义中要求 contact
必须包含 phone
属性,而 data
中并未包含该属性。items
中的第一个项目缺少数值大于等于 1 的 quantity
属性,第二个项目缺少 name
属性。
支持的格式
@hyperjump/json-validation 支持以下几种 JSON Schema 定义的数据类型:
- array
- boolean
- integer
- null
- number
- object
- string
此外,它还支持以下格式:
- date-time
- hostname
- ipv4
- ipv6
- uri
结论
@hyperjump/json-validation 是一个用于对 JSON 数据结构的有效性进行验证的 NPM 包。它可以轻松地将模式应用于数据,并提供了错误信息,以便于调试。如果你的项目中需要验证 JSON 数据的结构和内容,@hyperjump/json-validation 是个不错的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60067356890c4f7277583c9c