JSON Schame的介绍及基本使用

  • JSON Schame的介绍
    如果要描述一件物品的详细信息,前端通常都喜欢用一个JSON体来展示这个物品的详细信息。例如我需要买一辆车,具体的描述详见下方
const myCar = {
  name: '特斯拉',
  color: 'red',
  price: 100,
  isNew: false // 等等
}

但是如果有很多人来都去一个厂家买车,那厂家对于用户的信息统计及校验就显得尤为重要。这时候所输入的数据格式就得统一掉。JSON Schame是一个用来描述json数据格式。

const schema = {
  type: 'object',
  properties: {
    name: {
      type: 'string',
      minLength: 1
    },
    color: {
      type: 'string',
      minLength: 1
    },
    price: {
      type: 'number',
    },
    isNew: {
      type: 'boolean',
    }
  }
}
  • JSON Schame的使用
    已经知道需要用哪些属性定义这个汽车了,那如何来进行校验呢。这里介绍一个常用的数据格式化工具ajv(环境node)。
const Ajv = require('ajv');
const ajv = new Ajv();
// 开启校验
const validate = ajv.compile(schema);
const isValid = validate(myCar);
console.log(isValid) // true

const valid = ajv.validate(schema, {
  name: 1,
  color: 'red',
  price: 100,
  isNew: false // 等等
});
if (!valid) console.log(ajv.errors);
/* [
  {
    keyword: 'type',
    dataPath: '.name',
    schemaPath: '#/properties/name/type',
    params: { type: 'string' },
    message: 'should be string'
  }
] */
  • schame的基本类型stringnumberobjectarraybooleannull自定义
  • schame重复代码块如何处理
使用场景
  1. 复杂配置表单校验
  2. 数据化大屏参数配置校验

[参考文档]

  • http://json-schema.org/
  • https://json-schema.apifox.cn/
  • https://ajv.js.org/json-schema.html
  • http://www.febeacon.com/ajv-docs-zh-cn/routes/basic/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个生成JSON Schema的JavaScript函数: ```javascript function generateJSONSchema(jsonStr) { try { const jsonData = JSON.parse(jsonStr); const schema = {}; for (let key in jsonData) { const value = jsonData[key]; if (typeof value === 'string') { schema[key] = { type: 'string' }; } else if (typeof value === 'number') { schema[key] = { type: 'number' }; } else if (typeof value === 'boolean') { schema[key] = { type: 'boolean' }; } else if (typeof value === 'object' && Array.isArray(value)) { schema[key] = { type: 'array', items: generateJSONSchema(JSON.stringify(value[0])) }; } else if (typeof value === 'object') { schema[key] = { type: 'object', properties: generateJSONSchema(JSON.stringify(value)) }; } } return schema; } catch (e) { console.error(e); return null; } } ``` 这个函数接收一个JSON字符串作为输入,然后生成对应的JSON Schema并返回。函数首先尝试将输入的JSON字符串转换为JSON对象,如果转换失败则返回null。然后,函数遍历JSON对象的每个属性和值,并根据其类型将其转换为相应的JSON Schema。如果属性的值是字符串、数字或布尔值,则将其类型设置为相应的JSON Schema类型。如果属性的值是数组,则将其类型设置为数组,并递归调用该函数以生成其元素的JSON Schema。如果属性的值是对象,则将其类型设置为对象,并递归调用该函数以生成其属性的JSON Schema。最后,函数返回生成的JSON Schema对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值