(二)json schema 语法

JSON Schema关键词

  • $schema:该关键字声明该模式是根据标准的特定草案编写的,主要用于版本控制,可省略。
  • $id:该关键字定义模式的URI,一般指向一个自主域名。方便后续引用,可省略。
  • title 和 description:该JSON Schema的注释和描述信息,不会向验证的数据调节约束。
  • type:该关键字会定义JSON数据的第一个约束,比如是JSON对象还是数组。
  • properties:需要约束的属性,值的类型是type的值 

类型关键字

类型(type) 进一步规范要求 备注
string minLength
maxLength
pattern 正则表达式
format 对字符串的格式做规范,例如电子邮件、日期、域名等。eg:  "format" : "date",
object properties 对象有哪些属性
required 必须属性有哪些 格式是一个数组
dependencies

属性依赖关系

"name": ["card_id"]

就是说如果有name,就一定要有 card_id

additionaProperties 是否允许额外的成员 true/false
minProperties 最少有几个属性成员
maxProperties 最多有几个属性成员
number
(数字就行,不区分是整数还是小数)
multipleOf

可以要求数值必须某个特定值的整数倍 

"multipleOf" : 10, 

// 要求数值必须是10的整数倍。

minimum 最小值
maximum 最大值
exclusiveMinimum 开区间最小值
exclusiveMaximum 开区间最大值
integer 要求数据必须是整数
array items

数组成员属性

1. "items"对应一个嵌套的Json Schema,这个Json Schema定义了每个元素应该满足的规范

2. 关键字items还可以对应一个数组,这时Json数组内的元素必须与Json Schema内items数组内的每个Schema按位置一一匹配

uniqueItems

数组元素是否必须唯一( true / false)

true: 不可重复

false:可以重复

minItems 数组最小长度
maxItems 数组最大长度
additionalItems 是否允许额外的成员 true/false
boolean
null

上面是一些常用的用法,还有一些复杂的就不列举了,可以去手册里面找找~

举栗子:

example 1:

const data = {
    "name": "Froid",
    "age" : 26,
    "address" : {
        "city" : "New York",
        "country" : "USA"
    }
  }
const schema = {
    type: "object",
    properties: {
      "name": {
        type: "string"
      },
      "age": {
        type: "integer"
      },
      "address": {
        type: "object",
        properties: {
          "city": {
            type: "string"
          },
          "country": {
            type: "string"
          }
        }
      }
    }
  }

example 2:

const data = [
    {
        "id": 2,
        "name": "An ice sculpture",
        "price": 12.50,
    },
    {
        "id": 3,
        "name": "A blue mouse",
        "price": 25.50,
    }
  ]
const schema = {
    type: "array",
    items: {
      type: "object",
      properties: {
        "id": {
          type: 'integer'
        },
        "name": {
          type: "string"
        },
        "price": {
          type: "number"
        }
      },
      required: [
        "id",
        "name",
        "price"
      ]
    }
  }

你可能感兴趣的:(JSON,schema,json)