📅  最后修改于: 2023-12-03 15:23:36.527000             🧑  作者: Mango
该项目是一个基于 JavaScript 的在线验证器,用途为验证 JSON 格式的数据是否符合特定的 JSON Schema 规范。
JSON Schema 是描述 JSON 数据结构的语言,它提供了一种格式来表示对 JSON 数据的约束和验证。该验证器能够根据用户提供的 JSON Schema,对输入的 JSON 数据进行校验,并给出校验结果。
整个项目基于 2020-12 版本的 JSON Schema 规范,使用 JavaScript 编写,实现了基本的校验功能,并且支持自定义校验规则。
可以将项目代码下载到本地运行,也可以通过以下命令安装:
$ npm install json-schema-validator
const JSONSchemaValidator = require('json-schema-validator');
const schema = {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "number"},
"email": {
"type": "string",
"pattern": "^\\S+@\\S+$"
}
},
"required": ["name", "age"]
};
const data = {
"name": "Tom",
"age": 18,
"email": "tom@example.com"
};
const validator = new JSONSchemaValidator();
const result = validator.validate(schema, data);
console.log(result.valid); // true
除了支持 JSON Schema 标准中定义的校验规则外,该验证器还支持用户自定义校验规则,以满足不同的业务需求。
const JSONSchemaValidator = require('json-schema-validator');
const schema = {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "number"},
"email": {"type": "string"}
},
"required": ["name", "age", "email"],
"validators": [
{
"type": "custom",
"validate": function (data) {
if (data.email !== 'example@example.com') {
return {"valid": false, "message": "Email must be example@example.com"};
}
return {"valid": true};
}
}
]
};
const data = {
"name": "Tom",
"age": 18,
"email": "tom@example.com"
};
const validator = new JSONSchemaValidator();
const result = validator.validate(schema, data);
console.log(result.valid); // false
console.log(result.errors); // ["Email must be example@example.com"]
自定义规则使用 validators
属性进行定义,其中 type
属性指定规则类型为 custom
,validate
属性则为具体的校验函数。如果校验不通过,则返回一个包含 valid
和 message
属性的对象,其中 message
属性指定错误信息,否则返回一个只含 valid
属性的对象即可。
一个简单的示例代码如下所示:
const JSONSchemaValidator = require('json-schema-validator');
const schema = {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "number", "minimum": 0, "maximum": 100},
"email": {"type": "string", "pattern": "^\\S+@\\S+$"}
},
"required": ["name", "age"]
};
const data = {
"name": "Tom",
"age": 18,
"email": "tom@example.com"
};
const validator = new JSONSchemaValidator();
const result = validator.validate(schema, data);
console.log(result.valid); // true
输出结果为 true
,说明数据符合该 JSON Schema 规范。
该项目是一个基于 2020-12 版本的 JSON Schema 规范,使用 JavaScript 实现的在线验证器,能够对 JSON 数据进行基本校验,并支持用户自定义校验规则。代码简单易懂,非常适合初学者学习。