📜  在线验证器 json 架构 2020-12 架构 - Javascript (1)

📅  最后修改于: 2023-12-03 15:23:36.527000             🧑  作者: Mango

在线验证器 JSON 架构 2020-12 架构 - JavaScript

简介

该项目是一个基于 JavaScript 的在线验证器,用途为验证 JSON 格式的数据是否符合特定的 JSON Schema 规范。

JSON Schema 是描述 JSON 数据结构的语言,它提供了一种格式来表示对 JSON 数据的约束和验证。该验证器能够根据用户提供的 JSON Schema,对输入的 JSON 数据进行校验,并给出校验结果。

整个项目基于 2020-12 版本的 JSON Schema 规范,使用 JavaScript 编写,实现了基本的校验功能,并且支持自定义校验规则。

特性
  • 基于 2020-12 版本的 JSON Schema 规范,使用 JavaScript 实现。
  • 支持 JSON 数据的基本校验,包括类型、长度、最小值、最大值、枚举等。
  • 支持用户自定义校验规则,满足不同业务需求。
  • 精灵的界面设计和用户体验,使得使用者能够轻松上手。
快速开始
安装

可以将项目代码下载到本地运行,也可以通过以下命令安装:

$ 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 属性指定规则类型为 customvalidate 属性则为具体的校验函数。如果校验不通过,则返回一个包含 validmessage 属性的对象,其中 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 数据进行基本校验,并支持用户自定义校验规则。代码简单易懂,非常适合初学者学习。