JSON Schema

1.JSON Schema的含义

        JSON Schema 是用于验证 JSON 数据结构的强大工具,Schema可以理解为模式或者规则,可以理解为JSON中的正则表达式

2.语法

2.1 type

        作用:约束数据类型

        取值范围:integer,string,object,array,null,boolean,number

import jsonschema
# 准备校验规则
schema = {
"type": "object" # 注意 type 和 后面的 类型,都要放到 ”“ 中!
} #
准备数据
data = {"a": 1, "b": 2}
# 调用函数
res = jsonschema.validate(instance=data, schema=schema)
print(res)

2.2 properties

        作用:是type:object关键字的辅助,用来检测object中每个属性是否满足条件,可以嵌套使用。

schema = {
    "type": "object",
    "properties": {
        "success": {"type": "boolean"},
        "code": {"type:": "integer"},
        "message": {"type": "string"},
        "money": {"type": "number"},
        "address": {"type": "null"},
        "data": {
            "type": "object",
            "properties": {  # 对 data 的对象值,进一步进行校验
                "name": {"type": "string"},
                "age": {"type": "integer"},
                "height": {"type": "number"}
            }
        },
        "luckyNumber": {"type": "array"}
    }
}

2.3 required

        作用:校验对象中必须存在的key,如果不存在则会抛出异常,比如校验一个学生信息的JSON数据,这个数据中必须有name,age,id这三个字段,就可以使用required

data = {
    "success": True,
    "code": 10000,
    "message": "操作成功",
    "data": None,
}  

schema = {
    "type": "object",
    "required": ["success", "code", "message", "data"]
}

#校验data是否符合schema,如果不符合则会抛出ValidationError
res = jsonschema.validate(instance=data, schema=schema)

2.4 const

        作用:校验key是否是一某个值,比如 gender 要求为男,就可以使用const

data = {
    "success": True,
    "code": 10000,
    "message": "操作成功",
    "data": None,
}  
schema = {
    "type": "object",
    "properties": {
        "success": {"const": True},
        "code": {"const": 10000},
        "message": {"const": "操作成功"},
        "data": {"const": None}
    },
    "required": ["success", "code", "message", "data"]
}

2.5 pattern

        作用:校验字符串是否满足正则表达式

        一些基础的正则表达式:

data = {
    "message": "!jeklff37294操作成功43289hke",
    "mobile": "15900000002"
}  

schema = {
    "type": "object",
    "properties": {
        "message": {"pattern": "操作成功"},
        "mobile": {"pattern": "^[0-9]{11}$"}
    }
}

3.具体实例

import jsonschema

data = {
    "success": False,
    "code": 10000,
    "message": "xxx登录成功",
    "data": {
        "age": 20,
        "name": "lily"
    }
}  

schema = {
    "type": "object",
    "properties": {
        "success": {"type": "boolean"},
        "code": {"type": "integer"},
        "message": {"pattern": "登录成功$"},
        "data": {
            "type": "object",
            "properties": {
                "name": {"const": "lily"},
                "age": {"const": 20}
            },
            "required": ["name", "age"]
        }
    },
    "required": ["success", "code", "message", "data"]
}  #
res = jsonschema.validate(instance=data, schema=schema)

validate方法没有返回值,如果校验通过res的值是None,如果不通过那么就会直接抛出ValidationError

JSON Schema是一种用于描述JSON数据结构的标准格式,定义了一组关键字和属性,用于描述JSON数据的类型、格式、验证规则等信息。借助JSON Schema,可对前端应用程序中的数据进行验证、格式化、转换等操作,确保数据的正确性和可靠性[^1]。 以下是JSON Schema的详细介绍及使用方法: ### 定义 JSON Schema本质是一个JSON对象,通过特定关键字和属性来描述另一个JSON数据的结构和约束。例如: ```json { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0, "maximum": 150 }, "email": { "type": "string", "format": "email" } }, "required": ["name", "email"] } ``` 此示例定义了一个对象,包含`name`(字符串类型)、`age`(整数类型,范围在0到150之间)和`email`(字符串类型且符合邮箱格式)三个属性,且`name`和`email`为必需属性[^1]。 ### 使用方法 #### 1. 安装依赖库 在Python中使用`jsonschema`库进行JSON Schema验证,可使用以下命令安装: ```bash pip install jsonschema ``` #### 2. 编写JSON Schema和待验证的JSON数据 ```python import jsonschema # 定义JSON Schema schema = { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0, "maximum": 150 }, "email": { "type": "string", "format": "email" } }, "required": ["name", "email"] } # 待验证的JSON数据 data = { "name": "John Doe", "age": 25, "email": "johndoe@example.com" } # 验证数据 try: jsonschema.validate(instance=data, schema=schema) print("数据验证通过") except jsonschema.exceptions.ValidationError as e: print(f"数据验证失败: {e}") ``` 在上述代码中,首先定义了JSON Schema和待验证的JSON数据,然后使用`jsonschema.validate`函数进行验证。若数据符合Schema定义,验证通过;否则,抛出`ValidationError`异常[^2]。 ### 应用场景 - **数据验证**:在前端应用程序或API接口中,使用JSON Schema验证用户输入或接收到的数据,确保数据的正确性和完整性。 - **数据交换**:在不同系统或服务之间交换JSON数据时,使用JSON Schema定义数据结构,确保双方对数据的理解一致。 - **文档生成**:JSON Schema可作为数据结构的文档,帮助开发人员理解和使用数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值