本文概览:介绍json schema和一个工具 https://github.com/xeipuuv/gojsonschema

1 Json Schema 介绍

1.1 Json Schema是什么

以golang为例,比如定义了一个struct

创建一个实例就是

 

如果把json看成一个实例对象,那么Json Schema 可以看成是json对象的struct定义。Json Schema 本身是用 Json编写的。

1.2 Json Schema作用

json-schema,是用 json 的格式来定义 json 结构的方法,可以通过 json-schema 的定义规则,来检查一个 json 结构是否符合预期。

 

2 Json schema 常用的在线工具

3 Json Schema规则

以下表格整理了常用的 json schema 的关键:https://juejin.cn/post/7086808573027549197

关键字 描述
$schema 说明是哪个版本的 Json Schema,不同版本间不完全兼容
title 用于进行简单的描述,可以省略
description 用于进行详细的描述信息,可以省略
type 用于约束 json 的字段类型、string、number\integer、object、array、boolean
properties 定义属性字段,定义每个字段的键和值类型
required 必需属性,数组类型,指定上述 properties 中哪些是必需的字段
minimum type 为 integer 时,可被接受的最小值
maximum type 为 integer 时,可被接受的最大值
maxLength type 为 string 或 array 时,可被接受的最小长度
minLength type 为 string 或 array 时,可被接受的最大长度
uniqueItems type 为 array 时,数组元素时否唯一
pattern type 为 string 时,将字符串限制为特定的正则表达式
enum 用于将值限制为一组固定的值,其至少含有一个元素,且所含元素必须唯一
additionalProperties 将用于验证与 properties 不匹配的属性是否被允许
patternProperties 将正则表达式映射到模式。如果属性名称与给定的正则表达式匹配,则属性值必须符合定义的类型
allOf (AND) 必须对「所有」子模式有效
anyOf (OR) 必须对「任意」子模式有效
oneOf (XOR) 必须对「恰好一个」子模式有效

举例 定义一个json规则 json_schema

一个json数据

判断这个json数据是否满足规则,使用在线工具https://www.jsonschemavalidator.net/

screenshot-20230422-151259

4 使用SDK

工具地址:https://github.com/xeipuuv/gojsonschema

 

参考

https://json-schema.apifox.cn/

https://juejin.cn/post/7086808573027549197

分类&标签