JSON 模式(Schema)

 

JSON 模式是一种基于 JSON 格式定义 JSON 数据结构的规范。 
现在,RESTful接口和JSON大行其道,我们可以把JSON直接存储到数据库中,提供了比原先的关系表更容易扩展的能力(虽然JSON串的存储仍然用到了关系表)。RESTful接口直接返回JSON数据,比返回xml更加简洁和易读。xml中可以有xml schema对xml数据进行定义和校验,同样的,JSON中也有相应的叫做JSON schema的机制,来对JSON数据进行描述和定义,并且提供了相应的机制来检验某个JSON字符串是否符合JSON schema的定义。

解析软件:

  • Python

https://github.com/Julian/jsonschema
https://github.com/zyga/json-schema-validator

  • Online

http://jsonschemalint.com/

 

我们来看一下可以用于这一模式中的各种重要关键字:

关键字描述
$schema$schema 关键字状态,表示这个模式与v4规范草案书写一致。
title用它给我们的模式提供了标题。
description关于模式的描述。
typetype 关键字在我们的JSON数据上定义了第一个约束:必须是一个JSON对象。
properties定义各种键和他们的值类型,以及用于JSON文件中的最小值和最大值。
required存放必要属性列表。
minimum给值设置的约束条件,表示可以接受的最小值。
exclusiveMinimum如果存在”exclusiveMinimum”并且具有布尔值true,如果它严格意义上大于”minimum”的值则实例有效。
maximum给值设置的约束条件,表示可以接受的最大值。
exclusiveMaximum如果存在”exclusiveMinimum”并且具有布尔值true,如果它严格意义上小于”maximum” 的值则实例有效。
multipleOf如果通过这个关键字的值分割实例的结果是一个数字则表示紧靠”multipleOf”的数字实例是有效的。
maxLength字符串实例字符的最大长度数值。
minLength字符串实例字符的最小长度数值。
pattern如果正则表达式匹配实例成功则字符串实例被认为是有效的。

测试json

[
    {
        "id": 2,
        "name": "An ice sculpture",
        "price": 12.50
    },
    {
        "id": 3,
        "name": "A blue mouse",
        "price": 25.50
    }
]
  •  

json模式示例

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Product",
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "id": {
                "description": "The unique identifier for a product",
                "type": "integer"
            },
            "name": {
                "description": "Name of the product",
                "type": "string"
            },
            "price": {
                "type": "number",
                "minimum": 0,
                "exclusiveMinimum": true
            }
        },
        "required": ["id", "name", "price"]
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值