文章目录1. 安装2. 介绍3. 数据类型4. 最大最小值5. 字符串特殊校验6. 数组约束7. 对象约束8. 必需属性9. 依赖关系1. 安装JSON Schema 是一个用来定义和校验 JSON 的 web 规范简而言之JSON Schema 是用来校验 json 是否符合预期。根据json创建 JSON Schema后可以使用你选择的语言中的验证器将示例数据与你的模式进行验证。在命令行运行# 建议跟这里统一版本避免因版本不同造成的使用差异pipinstalljsonschema4.23.0结果如下所示2. 介绍Json 和 JSON Schema 代码如下from jsonschema.validatorsimportvalidate deftest_01():json_data{code:SUCCESS,errMsg:,data:False}json_schema{type:object,required:[],properties:{code:{type:string},errMsg:{type:string},data:{type:boolean}}}结果如下所示通过上面的对比可见JSON Schema 从多个方面对 JSON 数据进行校验。如 “type”、“required”、“properties” 等以确保其正确性和一致性。接下来我们来了解 JSON Schema 中的关键词以及作用。 json 转 JSON Schema太麻烦使用现有工具自动转换在线JSON转Schema工具注意工具不是万能的结果可能存在错误要对自动生成的结果进行二次检查。示例校验博客列表页返回的 json 数据。原生 json 如下所示{code:SUCCESS,errMsg:,data:[{id:1,title:第一篇博客,content:111我是博客正文我是博客正文我是博客正文,userId:1,isLoginUser:null,deleteFlag:0,createTime:2026-04-28 11:31,updateTime:2026-04-28T03:31:05.00000:00},{id:2,title:第二篇博客,content:222我是博客正文我是博客正文我是博客正文,userId:2,isLoginUser:null,deleteFlag:0,createTime:2026-04-28 11:31,updateTime:2026-04-28T03:31:10.00000:00},{id:3,title:测试服务器,content:服务器嘻嘻哈哈部署到服务器,userId:1,isLoginUser:null,deleteFlag:0,createTime:2026-04-28 11:33,updateTime:2026-04-28T03:33:54.00000:00},{id:4,title:李四登录,content:我是李四部署到服务器嘻嘻哈哈,userId:2,isLoginUser:null,deleteFlag:0,createTime:2026-04-28 11:35,updateTime:2026-04-28T03:35:35.00000:00}]}然后通过在线转换工具转成 json Schema{type:object,required:[],properties:{code:{type:string},errMsg:{type:string},data:{type:array,items:{type:object,required:[],properties:{id:{type:number},title:{type:string},content:{type:string},userId:{type:number},isLoginUser:{type:[boolean,null]},deleteFlag:{type:number},createTime:{type:string},updateTime:{type:string}}}}}}运行结果如下所示3. 数据类型type关键字指定了数据类型。可以验证 JSON 数据中每个属性的数据类型是否符合预期。常用的数据类型包括type解释string字符串类型用于文本数据。number数字类型用于表示浮点数。integer整数类型用于表示整数。boolean布尔类型值为true或false。object对象类型用于嵌套的 JSON 对象。array数组类型用于列表或集合。null空值类型。示例如下{type:object,properties:{name:{type:string},age:{type:integer}}}注意properties是一个验证关键字。当你定义properties时你创建了一个对象其中每个属性代表正在验证的 JSON 数据中的一个键。4. 最大最小值minimum 和 maximum指定数值的最小值和最大值。exclusiveMinimum 和 exclusiveMaximum指定数值必须严格大于或小于某个值不包含等于。示例如下{type:object,properties:{age:{type:integer,minimum:0,maximum:120}}}5. 字符串特殊校验pattern使用正则表达式来验证字符串是否符合特定的模式。示例如下{type:object,properties:{email:{type:string},username:{type:string,pattern:\\S}}}6. 数组约束minItems 和 maxItems指定数组的最小和最大长度。uniqueItems确保数组中的元素是唯一的。items定义数组中每个元素的类型和约束。示例如下{type:object,properties:{tags:{type:array,items:{type:string},minItems:1,uniqueItems:true}}}7. 对象约束minProperties 和 maxProperties指定对象的最小和最大属性数量。additionalProperties控制是否允许对象中存在未在properties中定义的额外属性默认为true。示例如下{type:object,properties:{name:{type:string}},minProperties:1,additionalProperties:false}8. 必需属性通过required关键字JSON Schema 可以指定哪些属性是必需的。如果 JSON 实例中缺少这些必需属性验证将失败。示例如下{type:object,properties:{name:{type:string},email:{type:string}},required:[name,email]}9. 依赖关系dependentRequired 可以定义属性之间的依赖关系。例如如果某个属性存在则必须存在另一个属性。示例如下{type:object,properties:{creditCard:{type:string},billingAddress:{type:string}},dependentRequired:{creditCard:[billingAddress]}}