当前位置: 首页 > web >正文

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 jsonschemadata = {"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

http://www.xdnf.cn/news/9897.html

相关文章:

  • javaweb 前言
  • ArcPy错误处理与调试技巧
  • 抖音、快手无水印福音开源下载器之蓝猫 BlueCatKoKo
  • MMdetection推理保存图片和预测标签脚本
  • 前端的面试笔记——Vue2/3(一)Vue2和Vue3的区别和优缺点
  • 【ROS2】创建单独的launch包
  • 进程同步机制-信号量机制-AND型信号量
  • 特别篇-产品经理(三)
  • 数学概念解释数据集(200条)收集分享,为AI智能体应用助力~
  • 【Dv3Admin】工具CRUD混合器文件解析
  • 【SQL Server Management Studio 连接时遇到的一个错误】
  • 纵览网丨病毒学领域的 AI 变局:机遇、隐忧与监管之路
  • 5.28 孔老师 nlp讲座
  • 罗德里格斯公式动图演示
  • [ Qt ] | QPushButton常见用法
  • Allegro 版本查看和降版本
  • DeepSeek:不同模式(v3、R1)如何选择?
  • 三层架构 vs SOA vs 微服务:该选谁?
  • 华为云Flexus+DeepSeek征文 | 初探华为云ModelArts Studio:部署DeepSeek-V3/R1商用服务的详细步骤
  • 大型工业控制系统中私有云计算模式的弊端剖析与反思
  • 数据结构 - 数相关计算题
  • ZigBee 协议:开启物联网低功耗通信新时代
  • 【conda报错】InvalidArchiveError
  • 基于Session与基于Redis与Token验证码登录校验
  • 并查集 c++函数的值传递和引用传递 晴神问
  • <el-date-picker>配置禁用指定日期之前的时间选择(Vue2+Vue3)
  • 尚硅谷redis7 86 redis集群分片之3主3从集群搭建
  • 自动化测试实例:Web登录功能性测试(无验证码)
  • 《深度关系-从建立关系到彼此信任》
  • 自动脚本精灵 解锁会员版 v25.05.25 智能安卓自动点击脚本助手APP